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

时间:2016-03-30 19:02:37

标签: c# logging log4net

我希望在其值为空时排除自定义字段名称

我的配置文件

 <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 = {&#34; Rule1&#34;:&#34; 1&#34;} MethodName   =&#34;方法&#34;

当有规则时,我们可以使日志像这样

  

2016-03-25 04:46:54,057 [9] INFO MethodName =&#34; Method&#34;

1 个答案:

答案 0 :(得分:1)

我认为在没有自定义代码的情况下执行此操作的唯一方法是使Rules属性包含整个字符串,包括它的标题:如果有规则,则只设置值。

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

并配置:

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