logback-android-11.1-2.jar を slf4j-api-1.7.6.jar および android javamail libs (アクティベーション、追加、およびメール jar) と共に使用しています。
私は、asynchronousSending が true に設定されているか省略されている場合に正常に動作する SMTP アペンダーを使用していますが (デフォルトでは true であるため)、明示的に false に設定すると、電子メールが送信されず、何も受信しません。
私が達成しようとしているのは、デバイスが接続されていないときに SMTP アペンダーがトリガーされた場合、電子メールが送信されない場合のように、デバイスが接続されたときに電子メール送信を再試行することです。SMTPアペンダーを同期として構成するとうまくいくのではないかと思いましたか?
私は何か間違ったことをしていますか、それともこれは問題ですか?
ありがとうございました、
これは私の logback.xml です:
<configuration>
<appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
<smtpHost>dnzakex.com</smtpHost>
<smtpPort>25</smtpPort>
<to>sample@gmail.com</to>
<from>no-reply@test.com</from>
<subject>Mobile LOG - %logger{35}</subject>
<layout class="ch.qos.logback.classic.html.HTMLLayout">
<pattern>%d{dd-MM-yyyy HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</layout>
<!--Asynchronous by default is true, but we want to wait confirmation in case there is no connectivity. THIS DOES NOT WORK-->
<asynchronousSending>false</asynchronousSending>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/mnt/sdcard/MobileLog.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily. The %i will iterate file names as file1, file2, etc for the same date-->
<FileNamePattern>/mnt/sdcard/MobileLog.%d{dd-MM-yyyy}.%i.log.gz</FileNamePattern>
<MaxHistory>30</MaxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>5MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<append>true</append>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<charset>UTF-8</charset>
<pattern>%d{dd-MM-yyyy HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="EMAIL" />
<appender-ref ref="FILE" />
</root>
</configuration>
PS: logback-android-11.1-3.jar を試してみましたが、同じ結果が得られました。驚くべきことに、synchronousSending false として構成されていると、時々しか機能しません。たとえば、Android アプリケーションを起動して何かをログに記録し始めると、それがファイルに追加されます。エラーをログに記録すると、エラーがトリガーされたはずの電子メールが届きません (また、asynchronousSending が true の場合、適切に受信します)。しかし..後でLOG.error(..)に他のエラーが記録された場合、電子メールがトリガーされます。何が突然メール送信を機能させているのか、私には何の意味もありませんが、フレームワークのバグのように思えますか?