json - log4net.Ext.Json 自定义属性未出现在 json 中

标签 json log4net

我们正在设置 log4net 属性,但它们没有出现在 log4net.ext.json 输出的日志文件中。

log4net.GlobalContext.Properties["OurCompany.ApplicationName"] ="fubar";

但是,我们的日志不包含使用 wiki 中指定的默认配置的这些内容。我做错了吗?

我们的 log4net 配置如下所示:

<log4net debug="false">
  <appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString">
      <conversionPattern value="%env{MY_LOG_DIR}\%property{OurCompany.ApplicationName}\%property{OurCompany.ApplicationName}_%date{yyyy-MM-dd}.log" />
    </file>
    <appendToFile value="true" />
    <rollingStyle value="Date" />
    <layout type="log4net.Layout.SerializedLayout, log4net.Ext.Json">
      <decorator type='log4net.Layout.Decorators.StandardTypesDecorator, log4net.Ext.Json' />
      <default />
      <!--explicit default members-->
      <remove value='message' />
      <!--remove the default preformatted message member-->
      <member value='message:messageobject' />
      <!--add raw message-->
    </layout>
  </appender>
  <root>
    <level value="DEBUG" />
    <appender-ref ref="FileAppender" />
  </root>
</log4net>

我得到了标准字段(Splunk 光荣地使用了它),但没有得到自定义字段。有什么建议吗?

最佳答案

修复了一段时间但没有发布。从事件中读取属性时出现故障。它已在修订版 26 中修复。请尝试新版本 20140623 - https://sourceforge.net/projects/log4net-json/files/20140623/

哦,为属性添加一个成员 - “property”或“OurCompany.ApplicationName”

或者,对于像这样的静态内容,您可能需要尝试添加模式布局成员 (A):

public class Members : RepoTest
{
    protected override string GetConfig()
    {
        return @"<log4net>
                    <root>
                      <level value='DEBUG'/>
                      <appender-ref ref='TestAppender'/>
                    </root>

                    <appender name='TestAppender' type='log4net.Ext.Json.Tests.General.TestAppender, log4net.Ext.Json.Tests'>
                      <layout type='log4net.Layout.SerializedLayout, log4net.Ext.Json'>
                        <member value='OurCompany.ApplicationName' /> <!-- ref to property -->
                        <member value='A|L-%p-%c' /> <!-- (|) arbitrary pattern layout format -->
                        <member value='B%date:yyyy' /> <!-- (%:) one pattern layout conversion pattern with optional option -->
                        <member value='Host=ProcessId\;HostName' /> <!-- (=) nested structure, escape ; -->
                        <member value='App:appname' /> <!-- named member -->
                      </layout>
                    </appender>
                  </log4net>";
    }

    protected override void TestLog(log4net.ILog log)
    {
        log4net.GlobalContext.Properties["OurCompany.ApplicationName"] = "fubar";

        log.Info(4);

        var events = GetEventStrings(log.Logger);

        Assert.AreEqual(1, events.Length, "events Count");

        var le = events.Single();

        Assert.IsNotNull(le, "loggingevent");

        var procid = Process.GetCurrentProcess().Id;

        StringAssert.StartsWith(@"{""OurCompany.ApplicationName"":""fubar""", le, "log line");
        StringAssert.Contains(@",""Host"":{", le, "log line");
        StringAssert.Contains(@"""ProcessId"":" + procid, le, "log line");
        StringAssert.Contains(@"""HostName"":""" + Environment.MachineName + @"""", le, "log line");
        StringAssert.Contains(@"""A"":""L-INFO-log4net.Ext.Json.Tests.Layout.Arrangements.Members""", le, "log line");
        StringAssert.Contains(@"""B"":""" + DateTime.Now.Year + @"""", le, "log line");
        StringAssert.Contains(@"""App"":""", le, "log line");
    }
}

最后,尝试成员“appname”。

谢谢,罗布

关于json - log4net.Ext.Json 自定义属性未出现在 json 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24331508/

相关文章:

json - 将 Guava HashMultimap 转换为 json

javascript - 按 HTML SELECT 对象过滤 Json 功能

java - 无法在 Java Servlet 中反序列化 JSON

azure - Log4net 无法在 Azure 上运行

logging - 抑制内部 log4net 错误消息

log4net - 如何在Quartz.Net中从Log4Net切换到NLog?

c# - adoappender 的 Log4Net 可用数据库字段 - 似乎还有一些,即 method_name?

json - grunt-mocha-test JSON 报告器到没有 console.logs 的文件

javascript - 如何在 Javascript 中计算对象数组内的值?

c# - Entity Framework 4.0 : How to log sql statements