如果运行某台计算机,请将Log4Net配置为不使用smtp appender

时间:2009-03-06 20:13:57

标签: log4net environment-variables

我正在设置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>

有没有办法在属性过滤器中使用环境变量?欢迎其他建议。

1 个答案:

答案 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。