log4net 在其值为空时排除自定义字段名称

log4net to exclude custom field name when its value is empty

我想排除值为空的自定义字段名称

我的配置文件

 <conversionPattern value="%date [%thread] %-5level Rules =%property{Rules} MethodName =%property{MethodName} %message%newline" />

我的记录器

log4net.LogicalThreadContext.Properties["MethodName"] = method;
log4net.LogicalThreadContext.Properties["Rules"] = Rules;

输出:

2016-03-25 04:46:54,057 [9] INFO Rules = {"Rule1":"1"} MethodName ="Method"

有规则的时候能不能把日志做成这样

2016-03-25 04:46:54,057 [9] INFO MethodName ="Method"

我相信没有自定义代码的唯一方法是让 Rules 属性 包含整个字符串,包括它的标题:只有在有规则的情况下才设置值。

if (Rules.Any())
    log4net.LogicalThreadContext.Properties["Rules"] = "Rules = " + Rules;

和配置:

<conversionPattern value= "%date [%thread] %-5level %property{Rules} 
                           MethodName =%property{MethodName} %message%newline" />