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

Cha*_*ler 5 log4net environment-variables

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

我试图在propertyfilter中使用环境变量COMPUTERNAME,但这不起作用:

<filter type="log4net.Filter.PropertyFilter">
  <Key value="COMPUTERNAME" />
  <StringToMatch value="myComputerName" />
  <Accept value="false" />
</filter>
Run Code Online (Sandbox Code Playgroud)

我在这样的文件追加器中使用了ComputerName:

<file value="${HOMEDRIVE}\\loggingDirectory\\AppLogFile.${COMPUTERNAME}.log" />
Run Code Online (Sandbox Code Playgroud)

这也没有用(我也没想到):

<filter type="log4net.Filter.PropertyFilter">
  <Key value="${COMPUTERNAME}" />
  <StringToMatch value="myComputerName" />
  <Accept value="false" />
</filter>
Run Code Online (Sandbox Code Playgroud)

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

Pet*_*old 5

您使用了错误的Key值.LoggingEvent.Properties集合使用HostName属性填充,该属性具有"log4net:HostName"签名.

您的过滤器应如下所示:

<filter type="log4net.Filter.PropertyFilter">
    <Key value="log4net:HostName" />
    <StringToMatch value="computerToExclude" />
    <AcceptOnMatch value="false" />
</filter>
Run Code Online (Sandbox Code Playgroud)

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