是否可以在数据库中插入额外的字段并在log4net中使用它们?我有一个UserId我希望在一个额外的字段中log-table.
我在以下字段中添加了字段log4net.config:
<parameter>
<parameterName value="@userid" />
<dbType value="guid" />
<layout type="log4net.Layout.RawPropertyLayout" />
</parameter>
Run Code Online (Sandbox Code Playgroud)
但是如何更新ILog界面以支持额外的数据库字段.所以我可以举例:
log4net.LogManager.GetLogger("logname").Fatal(message, exception, userid);
Run Code Online (Sandbox Code Playgroud)
tma*_*hek 20
您可以使用log4net中的"上下文"功能.基本上,它允许您设置可以在日志追加器中使用的属性.您可以在不同的范围(全局,线程等)设置这些属性.在你的情况下,我认为你可以去(例如,在用户登录后):
log4net.ThreadContext.Properties["userid"] = userid;
Run Code Online (Sandbox Code Playgroud)
在配置文件中,您可以使用此属性并将其添加到日志记录追加程序.我认为AdoNetAppender就是这样的
<parameter>
<parameterName value="@userid" />
<dbType value="guid" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{userid}" />
</layout>
</parameter>
Run Code Online (Sandbox Code Playgroud)
请注意,我没有编译上面的任何片段,所以他们可能需要一些调整,但它应该让你大致了解如何解决这个问题.
你可以在这里阅读更多相关信息.
PS.我认为第一个答案中提到的MDC.Set已经过时了.
| 归档时间: |
|
| 查看次数: |
7446 次 |
| 最近记录: |