5

当生产代码中出现错误时,我正在设置一个 SMPTAppender 以通过电子邮件发送日志文件。有一些机器,例如本地的测试机器,我不希望发送电子邮件。

我尝试在属性过滤器中使用环境变量 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>

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

4

1 回答 1

5

您使用了错误的 Key 值。LoggingEvent.Properties 集合由具有“log4net:HostName”签名的 HostName 属性填充。

您的过滤器应如下所示:

<filter type="log4net.Filter.PropertyFilter">
    <Key value="log4net:HostName" />
    <StringToMatch value="computerToExclude" />
    <AcceptOnMatch value="false" />
</filter>

还要注意使用 AcceptOnMatch,而不是 Accept。

于 2009-04-16T09:23:51.507 回答