有没有一种方法可以以编程方式终止日志回退,以便在运行时创建日志文件?

时间:2020-01-13 06:06:46

标签: java spring file logback

我想发送带有错误日志的邮件,该日志已创建了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>

0 个答案:

没有答案