我想发送带有错误日志的邮件,该日志已创建了logback。因为我不知道有多少错误,也不知道错误日志的文件大小,所以我无法使用内置的SMTP附加程序。所以我写了自己的电子邮件课程,我想做这样的事情:
try (BufferedReader br = new BufferedReader(new FileReader(logfile))) {
if (br.readLine() == null) {
log.info("Successful run, no errors are logged");
} else {
log.info("Error log found, sending email with attachment");
SendMailWithAttachment.sendEmailWithAttachment(logfile);
}
我的问题是,直到程序终止,才会创建errorLog文件。有没有解决的办法?
我的logback-spring.xml文件:
<configuration>
<springProfile name="local">
<property resource="application.properties"/>
<property name="log_info" value="${log_info}"/>
<property name="log_error" value="${log_error}"/>
<appender name="FILE-ROLLING"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${log_info}.%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
<!-- each archived file, size max 10MB -->
<maxFileSize>500KB</maxFileSize>
<!-- total size of all archive files, if total size > 20GB, it will delete
old archived file -->
<totalSizeCap>1024MB</totalSizeCap>
<!-- 60 days to keep -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d %p %c{1.} [%t] %m%n</pattern>
</encoder>
</appender>
<appender name="ERRORLOG" class="ch.qos.logback.core.FileAppender">
<triggeringPolicy class="no.dnb.pbd.etl.utility.StartupTriggeringPolicy"/>
<file>${log_error}.html</file>
<append>true</append>
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="ch.qos.logback.classic.html.HTMLLayout">
<pattern>%relative%thread%mdc%level%logger%msg</pattern>
</layout>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<logger name="org.springframework" level="ERROR"/>
<logger name="my.project.test" level="DEBUG"/>
<root level="ERROR">
<appender-ref ref="ERRORLOG"/>
</root>
<root level="DEBUG">
<appender-ref ref="FILE-ROLLING" />
</root>
</springProfile>