Azure 和 log4net - 删除进程名称

Azure and log4net - Remove process name

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

我遇到了同样的问题。

在调试会话中查看 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 属性 以将其强制为你自己的值。