Azure和log4net - 删除进程名称

时间:2015-08-19 23:05:56

标签: azure logging log4net log4net-configuration log4net-appender

我正在尝试配置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>

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。

在调试会话中查看Trace Appender我可以看到根据documentation

TraceAppender.Category = "%logger"
  

默认为%logger,它将使用当前LoggingEvent的记录器名称作为类别参数。

进一步挖掘发现this登录了Log4Net错误跟踪

  

TraceAppender:添加开关以使用记录器名称作为跟踪类别

进行禁用

该项目被标记为已修复,但不清楚您添加到配置文件的具体内容。通过对话线程的一些建议进行了一些测试,发现你可以将类别设置为你想要的类别,所以如果你不需要任何东西,那么只需将它添加到你的配置中:

<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的新appender并覆盖Category属性以强制它为你自己的值。