0

私のログバックには、カスタムから拡張されたコンソールと電子メールアペンダーの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>

4

1 に答える 1