我正在设置SMPTAppender,以便在生产代码出错时通过电子邮件发送日志文件。有一些机器,例如本地的测试机器,我不希望发送电子邮件。
我尝试在propertyfilter中使用环境变量COMPUTERNAME,但这不起作用:
<filter type="log4net.Filter.PropertyFilter">
<Key value="COMPUTERNAME" />
<StringToMatch value="myComputerName" />
<Accept value="false" />
</filter>
我在这样的文件追加器中使用了ComputerName:
<file value="${HOMEDRIVE}\\loggingDirectory\\AppLogFile.${COMPUTERNAME}.log" />
这也没有用(我也没想到):
<filter type="log4net.Filter.PropertyFilter">
<Key value="${COMPUTERNAME}" />
<StringToMatch value="myComputerName" />
<Accept value="false" />
</filter>
有没有办法在属性过滤器中使用环境变量?欢迎其他建议。
答案 0 :(得分:5)
您使用了错误的Key值。 LoggingEvent.Properties集合使用HostName属性填充,该属性具有“log4net:HostName”签名。
您的过滤器应如下所示:
<filter type="log4net.Filter.PropertyFilter">
<Key value="log4net:HostName" />
<StringToMatch value="computerToExclude" />
<AcceptOnMatch value="false" />
</filter>
还要注意使用AcceptOnMatch,而不是Accept。