我正在尝试配置 log4net 以通过 Azure 进行日志记录。但是,一旦日志到达存储,日志源就会附加到日志消息中-
WorkerRole.WorkerRole:开始角色测试
我需要精确的日志格式,但是 log4net 将 WorkerRole.WorkerRole: 添加到消息中。
这是我用于 log4net 设置的配置-
<log4net>
<appender name="TraceAppender" type="log4net.Appender.TraceAppender">
<layout type="log4net.Layout.PatternLayout">
<!-- can be any pattern you like -->
<conversionPattern value="%message" />
</layout>
</appender>
<!-- does not have to be at the root level -->
<root>
<level value="ALL" />
<appender-ref ref="TraceAppender" />
</root>
</log4net>
最佳答案
我也遇到了同样的问题。
在调试 session 中查看 Trace Appender,我可以看到 TraceAppender.Category = "%logger"
根据 documentation
Defaults to %logger which will use the logger name of the current LoggingEvent as the category parameter.
进一步挖掘发现this登录Log4Net错误跟踪
TraceAppender : Add switch to disable using logger name as trace category
该项目已标记为已修复,但不清楚您添加到配置文件中的具体内容。对对话线程上的一些建议进行了一些测试,发现您可以将类别设置为您想要的内容,因此如果您不需要任何内容,只需将其添加到您的配置中即可:
<category value="" />
确保它是 appender
标记的子级,例如
<appender name="TraceAppender" type="log4net.Appender.TraceAppender">
<category value="" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level - %message%newline" />
</layout>
</appender>
或者,我想您可以尝试创建一个从 log4net.Appender.TraceAppender
派生的新附加程序,并覆盖 Category
属性以强制其为您自己的值。
关于Azure 和 log4net - 删除进程名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32107043/