【问题标题】:Azure and log4net - Remove process nameAzure 和 log4net - 删除进程名称
【发布时间】:2015-08-19 23:05:56
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    我遇到了同样的问题。

    在调试会话中查看 Trace Appender,我可以看到 TraceAppender.Category = "%logger" 根据 documentation

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

    进一步挖掘发现this登录Log4Net bug tracking

    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 派生的新附加程序,并覆盖 Category 属性以将其强制为您自己的值。

    【讨论】:

    • 这样,log4net (1.2.13) 似乎仍然发出“:”前缀,真的没有办法关闭类别吗?
    • 我并没有真正研究它;我刚刚接受了“:”并继续前进:)您可以查看创建自己的附加程序类并尝试覆盖TraceAppender的基本行为,但怀疑您可能需要查看AppenderSkeleton的RenderLoggingEvent@
    猜你喜欢
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多