私のログバックには、カスタムから拡張されたコンソールと電子メールアペンダーの2つのアペンダーがありますSMPTAppender
...私のロガーlogger.error("My error");
は、カスタムSMTPAppenderでx分後に電子メールの送信をトリガーします。問題は、スケジューラーが2 つが初期化されるため、遅延します。
これは 2 回発生します。
[EMAIL] という名前のアペンダを Logger[ROOT] にアタッチしています
そのため、IMO も 2 つのスケジューラが作成されます (start
メソッドは 2 回呼び出されます) 。
Logback.xml (問題のある場所):
<configuration debug="true">
Logging per console and per email
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
sets the format of the output
%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
</Pattern>
</layout>
</appender>
<appender name="EMAIL" class="com.konverto.phonebillasaj.appenders.ScheduledSMTPAppender">
<subject>TESTING: %logger{20} - %m</subject>
<layout class="ch.qos.logback.classic.html.HTMLLayout" />
<smtpHost>smtp.xxx.net</smtpHost>
<smtpPort>587</smtpPort>
<STARTTLS>true</STARTTLS>
<username>xxxx@xxx.net</username>
<password>xxxx</password>
<to>xxx@xxx.net</to>
<from>xxx@xxx.net</from>
<maxMessages>10</maxMessages>
for testing , comment in production, default 256
<cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
Send just one log entry per email, ready for a lot of emails if you put one.
<bufferSize>1</bufferSize>
</cyclicBufferTracker>
for testing , comment in production, default asynchronousSending = true
<asynchronousSending>false</asynchronousSending>
</appender>
<logger name="com.konverto.phonebillasaj" level="error" additivity="false">
<appender-ref ref="EMAIL"/>
<appender-ref ref="CONSOLE" />
</logger>
<root level="error">
<appender-ref ref="EMAIL" />
<appender-ref ref="CONSOLE" />
</root>