.net Log4Net和额外字段

.net Log4Net和额外字段,.net,log4net,.net,Log4net,是否可以在数据库中插入额外字段并在log4net中使用它们?我希望在日志表中的一个额外字段中有一个UserId 我在log4net.config中添加了该字段: <parameter> <parameterName value="@userid" /> <dbType value="guid" /> <layout type="log4net.Layout.RawPropertyLayout" /> </paramet

是否可以在数据库中插入额外字段并在log4net中使用它们?我希望在
日志表中的一个额外字段中有一个UserId

我在
log4net.config
中添加了该字段:

<parameter>
    <parameterName value="@userid" />
    <dbType value="guid" />
    <layout type="log4net.Layout.RawPropertyLayout" />
</parameter>
您可以使用log4net中的“上下文”特性。基本上,它允许您设置属性,然后在日志追加器中使用这些属性。您可以在不同的范围(全局、线程等)设置这些属性。在您的情况下,我认为您可以这样做(例如,在用户登录之后):

在配置文件中,可以使用此属性并将其添加到日志附加器中。我想对AdoNetAppender来说应该是这样的

<parameter>
    <parameterName value="@userid" />
    <dbType value="guid" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%property{userid}" />
    </layout>
</parameter>

请注意,我还没有编译上面的任何代码片段,因此它们可能需要一些调整,但它应该能让您大致了解如何解决这个问题

你可以阅读更多关于这方面的内容

另外,我认为第一个答案中提到的MDC.Set已经过时了

log4net.ThreadContext.Properties["userid"] = userid;
<parameter>
    <parameterName value="@userid" />
    <dbType value="guid" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%property{userid}" />
    </layout>
</parameter>