【问题标题】:How to configure an appender to log all log4net ThreadContext/GlobalContext/LogicalThreadContext properties?如何配置附加程序以记录所有 log4net ThreadContext/GlobalContext/LogicalThreadContext 属性?
【发布时间】:2016-08-24 11:05:21
【问题描述】:

如何配置一个 appender 来记录所有 log4net ThreadContext/GlobalContext/LogicalThreadContext 属性?

我想在我的应用程序中使用自定义属性并将所有内容记录到文本文件中。每个日志消息都应该是一个有效的 JSON 对象。

我想包含来自不同上下文对象(线程/逻辑线程/MDC/全局)的所有属性。但是我发现的所有示例都需要属性键的知识。

我找到了一个答案,让我想到,API 根本不可能做到这一点: Log4Net: Enumerating GlobalContext properties?

如果没有官方方法可以做到这一点,this code会指向正确的方向吗?

log4net.ext.json 似乎忽略了上下文属性

【问题讨论】:

    标签: c# json log4net log4net-appender


    【解决方案1】:

    只需使用以下转换模式,[%property] 将涵盖上下文中的所有属性。

    %date [%thread] %-5level %logger [%property] - %message%newline
    

    对于 JSON 对象,则需要编写自己的转换器。

    【讨论】:

      【解决方案2】:

      使用log4net.Ext.Json,可以使用property 成员:

      <appender...>
          <layout type='log4net.Layout.SerializedLayout, log4net.Ext.Json'>
              <decorator type='log4net.Layout.Decorators.StandardTypesDecorator, log4net.Ext.Json' />
              <default /> <!--explicit default members-->
              <member value='property' />
          </layout> 
      </appender>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多