Logback
을 SMTPAppender
과 함께 사용하려고 시도하고 있습니다. appender
에 연결된 평가자가 기록되어 100 개의 오류가 기록 될 때마다 이메일이 전송됩니다. 대부분의 경우 올바르게 작동하지만 여러 전자 메일을 트리거하는 루프에서 오류가 빠르게 발생하면 올바른 전자 메일 만 마지막 전자 메일 만 보내집니다. 첫 번째 이메일이 작성/전송되는 것을 완료하지 않은 경합 조건 인 것으로 보이며, 두 번째 이메일은 작성시 첫 번째 이메일을 덮어 씁니다. 다른 사람이 이것을 경험했거나 해결책을 찾았습니까? 내 logback 설정은 아래에 첨부되어 있습니다. 어떤 도움을 주시면 더 좋구요Logback SMTPAppender가 마지막 전자 메일 만 보냄
public class CountingLoggerEvaulator extends EventEvaluatorBase<ILoggingEvent> implements EventEvaluator<ILoggingEvent> {
//if limit is not set in configuration, this will cause it to send one email for each message received.
private int limit = 100;
private int counter = 0;
public void setLimit(int limit) {
this.limit = limit;
}
public int getLimit() {
return limit;
}
@Override
public boolean evaluate(ILoggingEvent expr) throws NullPointerException, EvaluationException {
counter++;
if (counter == limit) {
counter = 0;
return true;
} else {
return false;
}
}
}
:
<configuration>
<appender name="emailAppender" class="${logback.emailAppenderClass}">
<evaluator class="com.wdp.common.logging.logback.evaluators.CountingLoggerEvaulator">
<limit>100</limit>
</evaluator>
<to>${logback.emailNotificationRecipientStr}</to>
<from>${logback.emailNotificationFromStr}</from>
<smtpHost>${logback.smtpHost}</smtpHost>
<subject>Logback logs for facebook-ads-processes</subject>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d [Thread:%t] %p [%c] - %m%n</pattern>
</layout>
<cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
<bufferSize>${logback.cyclicBufferSize}</bufferSize>
</cyclicBufferTracker>
</appender>
</configuration>
이
는 평가입니다.
속성을? – michael667
감사합니다. 속성의 이름을 포함하도록 답을 편집했습니다. – jln646v