1

我有一个 log4J.xml SMTPAppender 配置如下:

  <appender name="MAIL" class="org.apache.log4j.net.SMTPAppender">
    <param name="Threshold" value="ERROR"/>
    <param name="EvaluatorClass" value="fi.reaktor.log4j.emailthrottle.ErrorEmailThrottle"/>
    <param name="BufferSize" value="512"/>
    <param name="SMTPHost" value="xxxx"/>
    <param name="SMTPPort" value="25"/>
    <param name="From" value="xxxx"/>
    <param name="To" value="xxx"/>
    <param name="Subject" value="xxx"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{dd/MM/yyyy HH:mm:ss} [%-5p] [%c{1}: %M] %m%n"/>
    </layout>
</appender>

我使用链接上建议的 EvaluatorClass:https ://github.com/reaktor/log4j-email-throttle

在页面上,标记了您可以更改 log4j.properties 文件中的默认配置:

  fi.reaktor.log4j.emailthrottle.throttleIfUnderSecs=60
  fi.reaktor.log4j.emailthrottle.emailIntervalInSecs=900
  fi.reaktor.log4j.emailthrottle.normalAfterSecs=3600

不幸的是,我没有看到如何在我的 Log4j.xml 文件中应用它。

4

1 回答 1

1

您引用的页面说:

您可以通过设置这些系统属性来更改默认值,因此您不能将这些设置放在 log4j 配置文件中。

您需要在启动 jvm 的命令行上使用“-D”标志设置这些属性:

java -Dfi.reaktor.log4j.emailthrottle.throttleIfUnderSecs=60 \ -Dfi.reaktor.log4j.emailthrottle.emailIntervalInSecs=900 \ -Dfi.reaktor.log4j.emailthrottle.normalAfterSecs=3600

或以编程方式从您的代码中设置它:

System.setProperty("fi.reaktor.log4j.emailthrottle.throttleIfUnderSecs", "60");
System.setProperty("fi.reaktor.log4j.emailthrottle.emailIntervalInSecs", "900");
System.setProperty("fi.reaktor.log4j.emailthrottle.normalAfterSecs", "3600");
于 2017-09-14T11:38:07.067 回答