Nlog:负载高时随机重复多次数据库记录

Nlog :Repeating db records multiple times randomly while load is high

当我在数据库中插入记录时,我遇到了日志数据库的问题,它插入了多次,而在文件中,同一条记录是一次插入的,而我正在检查跟踪文件,它显示了我的确切编号能够在我的数据库中看到但我不知道的原因,有人可以调查一下并让我知道导致问题的原因。

我正在附加跟踪文件和 nlog.config 文件,请检查它并告诉我导致问题的原因。

请在此处找到附件:

https://github.com/NLog/NLog/issues/3770

详细说明 Rolf 的评论。

你配置的一小部分:

<parameter name="@ResponseCode" layout="${var:ResponseCode}" />

${var} 是全局的,不是线程安全的。它并不意味着改变每一个日志事件。还有其他方法可以以线程安全的方式将上下文发送到数据库。查看描述的所有选项 here

对于这种情况,事件属性可能是一个不错的选择。你可以这样使用它:

logger.WithProperty("ResponseCode", responseCode).Info("Got response!");

或结构化日志记录风格:

logger.Info("Got response with code {ResponseCode}!", responseCode);

并在您的配置中将 ${var:ResponseCode} 替换为 ${event-properties:ReponseCode}