我将 logback-android-11.1-2.jar 与 slf4j-api-1.7.6.jar 和 android javamail 库(激活、附加和邮件 jar)一起使用。
我正在使用 SMTP 附加程序,当 asynchronousSending 设置为 true 或被省略(默认情况下也是 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 得到相同的结果。令人惊讶地配置为 asynchronousSending false 它仅在某些时候有效。例如,如果我启动 android 应用程序并开始记录一些内容,它将附加到文件中,如果我记录一个错误,我将不会收到错误应该触发的电子邮件(并且当 asynchronousSending 为真时,我会正确接收它),但是.. 如果稍后在 LOG.error(..) 上记录了其他错误,则会触发电子邮件。突然使电子邮件发送工作的原因对我来说没有任何意义,但这似乎是框架中的错误?