Я хочу отправить письмо с журналом ошибок, созданным 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 не создается до тех пор, пока программа не завершится. Есть ли способ обойти это?
Моя подпружиненная пружина. 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>