目前我在NLog.Config中有以下配置:
<target name="upd" xsi:type="FilteringWrapper" condition="contains('${message}', 'UPD U40')
or contains('${message}', 'UPD CAX')
or contains('${message}', 'UPD CAY')
or contains('${message}', 'UPD CMVQA')
or contains('${message}', 'UPD U68')
or contains('${message}', 'UPD CBY')
or contains('${message}', 'UPD CBX')
or contains('${message}', 'UPD CUX')
or contains('${message}', 'UPD CELL')
or contains('${message}', 'UPD BPS')
">
<target xsi:type="File" fileName="${basedir}/logs/UPD.log"
layout="${longdate} - ${message}" />
</target>
<target name="other" xsi:type="FilteringWrapper" condition="not contains('${message}', 'UPD U40')
and not contains('${message}', 'UPD CAX')
and not contains('${message}', 'UPD CAY')
and not contains('${message}', 'UPD CMVQA')
and not contains('${message}', 'UPD U68')
and not contains('${message}', 'UPD CBY')
and not contains('${message}', 'UPD CBX')
and not contains('${message}', 'UPD CUX')
and not contains('${message}', 'UPD CELL')
and not contains('${message}', 'UPD BPS')
">
<target xsi:type="File" fileName="${basedir}/logs/${shortdate}.log"
layout="${longdate} - ${message}" />
</target>
...
<logger name="*" minlevel="Debug" writeTo="upd,other"/>
我想要实现的是将所有UPD CAX等模式收集在UPD.log中,其余模式收集在${shortdate} .log中.我做到了.但是,我认为这里存在很大的冗余,因为我必须在两个地方添加模式.
如何简化目标/规则以获得相同的结果?
解决方法:
最简单的简化方法可能是使用变量.您可以将条件置于变量中,然后打开条件是否为真.如果要在一个位置配置它们,文件路径和布局等其他部分也可以是变量.这是一个简单的例子:
<variable name="filterCondition" value="contains('${message}', 'UPD U40')
or contains('${message}', 'UPD CAX')
or contains('${message}', 'UPD CAY')
or contains('${message}', 'UPD CMVQA')
or contains('${message}', 'UPD U68')
or contains('${message}', 'UPD CBY')
or contains('${message}', 'UPD CBX')
or contains('${message}', 'UPD CUX')
or contains('${message}', 'UPD CELL')
or contains('${message}', 'UPD BPS')
"/>
<variable name="logDir" value="${basedir}/logs" />
<variable name="logLayout" value="${longdate} - ${message}" />
<targets>
<target name="upd" xsi:type="FilteringWrapper" condition="${filterCondition}">
<target xsi:type="File" fileName="${logDir}/UPD.log"
layout="${logLayout}" />
</target>
<target name="other" xsi:type="FilteringWrapper" condition="not (${filterCondition})">
<target xsi:type="File" fileName="${logDir}/${shortdate}.log"
layout="${logLayout}" />
</target>
</targets>
标签:c,nlog 来源: https://codeday.me/bug/20190706/1394406.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。