加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 停止日志系统清理关机

发布时间:2020-12-14 16:23:42 所属栏目:Java 来源:网络整理
导读:我最近一直在尝试使用 logback,并直接从Eclipse内部运行示例.当我这样做时,我注意到 – 即使在我的静态主(String [] args)方法结束(从我的Java驱动程序类之内),应用程序继续运行. 我最终确定,Logback正在管理自己的线程,即使在我的主要应用程序退出之后,它仍
我最近一直在尝试使用 logback,并直接从Eclipse内部运行示例.当我这样做时,我注意到 – 即使在我的静态主(String [] args)方法结束(从我的Java驱动程序类之内),应用程序继续运行.

我最终确定,Logback正在管理自己的线程,即使在我的主要应用程序退出之后,它仍然保持活动.我搜索了一些解决方案,发现这是一种从Java内部明确关闭Logback的方法:

ILoggerFactory factory = LoggerFactory.getILoggerFactory();
if(factory instanceof LoggerContext) {
    LoggerContext ctx = (LoggerContext)factory;
    ctx.stop();
}

这真的是干净地关闭对数的唯一方法吗?我从来没有遇到一个日志记录系统(JUL,JCL,log4j等),使您明确关闭它,以便正常退出应用程序…

提前致谢!

更新:这里是logback.xml:

<configuration debug="true" scan="true" scanPeriod="5 minutes">
    <appender name="logManager-consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>TRACE</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>NEUTRAL</onMismatch>
        </filter>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="logManager-smtpAppender" class="ch.qos.logback.classic.net.SMTPAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>WARN</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>NEUTRAL</onMismatch>
        </filter>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <smtpHost>my.smtp.host</smtpHost>
        <to>john.smith@example.com</to>
        <from>no-reply@example.com</from>
        <username>my_user</username>
        <password>my_password</password>
        <subject>%logger{20} - %m</subject>
        <layout class="ch.qos.logback.classic.html.HTMLLayout"/>
        <cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
            <bufferSize>5</bufferSize>
        </cyclicBufferTracker>
    </appender>

    <root level="ALL">
        <appender-ref ref="logManager-consoleAppender" />
        <appender-ref ref="logManager-smtpAppender" />
    </root>
</configuration>

使用logback-1.0.13和JDK 1.6u34.

解决方法

这个问题可能是由于logback的错误.在SMTPAppender中将 asynchronousSending设置为true可以避免错误(不实际修复它).我已经添加了 a new issue in our jira描述的问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读