Logback - 需要发送一封电子邮件而不是多封电子邮件

问题描述 投票:0回答:1

我使用的是logback 1.2.3版。我在我的logback xml配置文件中配置了一个SMTPAppender,如下所示:

<appender name="email" class="ch.qos.logback.classic.net.SMTPAppender">
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>warn</level>
    </filter>
    <smtpHost>smtp.mydomain.org</smtpHost>
    <to>[email protected]</to>
    <from>[email protected]</from>
    <subject>${HOSTNAME} | %-5level: %logger{20}</subject>
    <layout class="ch.qos.logback.classic.PatternLayout">
        <pattern>%d [%thread] %-5level %logger{5}:%L - %msg%n</pattern>
    </layout>
    <asynchronousSending>false</asynchronousSending>
</appender>

如果我有一个类似下面的Java类,它会向我发送两封单独的电子邮件。我需要他们在一封电子邮件中。怎么样?

logger.error("statement 1");
logger.error("statement 2");

请注意,将以下内容添加到logback配置中没有帮助。我错过了什么?

<STARTTLS>true</STARTTLS>
<cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
    <bufferSize>10</bufferSize>
</cyclicBufferTracker>
<asynchronousSending>false</asynchronousSending>
java logback
1个回答
0
投票

我忘了更新答案。我很快就意识到从logback的角度来看并不是那么直截了当。如何知道何时触发电子邮件?如果在这之后还有另一个logger.error("statement 3");,然后电子邮件应该出去怎么办:

logger.error("statement 1");
logger.error("statement 2");

我们需要明确告诉logback何时触发电子邮件。阅读更多关于标记的here

因此,您需要在结尾处使用类似记录器语句的内容来标记电子邮件触发时:

logger.info(SMTP_TRIGGER, "statement last");

而且,您需要将您的logback配置更新为:

<appender name="SMTP" class="ch.qos.logback.classic.net.SMTPAppender">
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>warn</level>
    </filter>
    <smtpHost>smtp.mydomain.org</smtpHost>
    <to>[email protected]</to>
    <from>[email protected]</from>
    <subject>${HOSTNAME} | %-5level: %logger{20}</subject>
    <layout class="ch.qos.logback.classic.PatternLayout">
        <pattern>%d [%thread] %-5level %logger{5}:%L - %msg%n</pattern>
    </layout>
    <asynchronousSending>false</asynchronousSending>

    <evaluator class="ch.qos.logback.classic.boolex.JaninoEventEvaluator">
      <expression>
        marker != null  && marker.contains("SMTP_TRIGGER")
      </expression>
    </evaluator>
 </appender>
© www.soinside.com 2019 - 2024. All rights reserved.