Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Log4Net向messegeobject的属性添加前缀_C#_Json_Log4net - Fatal编程技术网

C# Log4Net向messegeobject的属性添加前缀

C# Log4Net向messegeobject的属性添加前缀,c#,json,log4net,C#,Json,Log4net,我正在尝试使用log4net以JSON格式记录一些值 下面是我的log4net配置 <appender name="DataDeleteAppender" type="log4net.Appender.RollingFileAppender"> <file value="c:\\deltanetscratch\\splunk\\DataDelete" /> <appendToFile value="true" /> &

我正在尝试使用log4net以JSON格式记录一些值

下面是我的log4net配置

<appender name="DataDeleteAppender" type="log4net.Appender.RollingFileAppender">
       <file value="c:\\deltanetscratch\\splunk\\DataDelete" />
       <appendToFile value="true" />
       <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
       <rollingStyle value="Date" />
       <datePattern value="'.'yyyyMMdd'.log'" />
       <staticLogFileName value="false" />
       <layout type="log4net.Layout.SerializedLayout, log4net.Ext.Json">
          <decorator type="log4net.Layout.Decorators.StandardTypesFlatDecorator, log4net.Ext.Json" />
          <default />
          <remove value="message" />
          <remove value="appname" />
          <remove value="ndc" />
          <remove value="logger" />
          <remove value="thread" />
          <member value="M:messageobject" />
       </layout>
    </appender>

  <logger name="DataDelete">
    <level value="INFO"/>
    <appender-ref ref="DataDeleteAppender"/>
  </logger>
下面是我的输出。请参见此处的所有属性获取M.prefix。我想删除前缀并按原样获取属性

{  
   "date":"2017-05-26T15:34:24.7920436+05:30",
   "level":"INFO",
   "M.EndTime":"2017-05-26T15:34:24.7920436+05:30",
   "M.IsClientConnected":true,
   "M.batchSize":2,
   "M.searchStartDate":"2000-04-30T00:00:00.0000000",
   "M.searchEndDate":"2008-04-30T00:00:00.0000000",
   "M.emails":"lec@intl.com",
   "M.ActionType":"Queue Course",
   "M.RowsAffected":"0"
}
我期望得到如下输出

{  
   "date":"2017-05-26T15:34:24.7920436+05:30",
   "level":"INFO",
   "EndTime":"2017-05-26T15:34:24.7920436+05:30",
   "IsClientConnected":true,
   "batchSize":2,
   "searchStartDate":"2000-04-30T00:00:00.0000000",
   "searchEndDate":"2008-04-30T00:00:00.0000000",
   "emails":"lec@intl.com",
   "ActionType":"Queue Course",
   "RowsAffected":"0"
}

您能告诉我如何实现这一输出吗?

这应该相当简单。替换:

<decorator type="log4net.Layout.Decorators.StandardTypesFlatDecorator, log4net.Ext.Json" />


StandardTypesFlatDecorator
使对象图平面化,将成员路径作为前缀前置

使用
StandardTypesDecorator
,您将在logevent对象中嵌套messageobject

如果这还不够好,那么我建议两种选择:

1) 实现您自己的decorator-请参阅的源代码-您可以重写
standarding()
方法以将LogEvent成员与自定义对象成员合并


2) 使用或重写日志。NXlog需要平面格式。

您认为它可能与配置中的这一行有关吗<代码>
<decorator type="log4net.Layout.Decorators.StandardTypesFlatDecorator, log4net.Ext.Json" />
<decorator type="log4net.Layout.Decorators.StandardTypesDecorator, log4net.Ext.Json" />