如何让log4net帮助我在%message中记录结构化数据?

时间:2012-03-27 10:06:22

标签: log4net

我们在C#程序中有自己的自定义记录器,现在正尝试移植到log4net。

在我们的应用程序中,通常会进入%message的进一步结构。它可能包含请求者,关联用户和其他结构,其中请求者和用户对程序具有内在意义。

希望最终能够搜索%message中的字段,比如requestid,这样我们就可以收集具有相同请求的所有日志条目了。

log4net在创建自己的自定义字段时是否有帮助?我们问的原因是,当前整个%消息默认记录为一个字符串。

有关如何为%message提供进一步格式化的任何其他建议?否则,我们必须在我们自己的代码中预先格式化%message,例如CSV格式

1 个答案:

答案 0 :(得分:4)

您可以使用事件上下文将其他结构化数据添加到日志条目中:

http://www.beefycode.com/post/Log4Net-Tutorial-pt-6-Log-Event-Context.aspx

根据您要记录的信息类型,您可能需要创建一个接受其他参数的包装器,否则您必须编写如下的详细代码:

log4net.ThreadContext.Properties["myInformation"] = yourAdditionalInformation;
log.Info("info message");

可以计算其他信息,因此可以设置一次(例如在应用程序启动时)。在上面的教程中查看计算出的上下文属性。