Nlog变量在会话结束之前是否存储相同的值

时间:2019-08-15 18:40:32

标签: nlog

我正在通过变量

传递异常消息
 LogManager.Configuration.Variables["Exception"] = exception.ToString();

nlog.config

 <variable name="Exception" />
 <column name="EXCEPTION MESSAGE" layout="${var: Exception}" />

在日志文件中,我创建了一个自定义nlog类,如上所述,我在其中通过变量传递了几个值。如果是第一次我遇到异常,那么它将在日志文件中每隔一行重复写入一次,尽管在同一会话的下一行中没有异常,直到我们获得第二个异常为止。然后第二个例外是在所有下一行中重写。

我该如何解决?有什么方法可以杀死以前的变量值?

1 个答案:

答案 0 :(得分:2)

您不应在NLog-Config-Variables中存储异常(或其他上下文信息)。

相反,您应该这样做:

logger.Error(exception, "Something bad happened");

然后将您的配置修改为此:

<column name="EXCEPTION MESSAGE" layout="${exception:format=tostring}" />
<column name="EXCEPTION TYPE" layout="${exception:format=type}" />
<column name="EXCEPTION TARGETSITE" layout="${exception:format=Method}" />

另请参阅https://github.com/NLog/NLog/wiki/Contexthttps://github.com/NLog/NLog/wiki/Exception-layout-renderer