C# Log4Net向messegeobject的属性添加前缀
我正在尝试使用log4net以JSON格式记录一些值 下面是我的log4net配置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" /> &
<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" />