簡體   English   中英

log4j2異步記錄器線程未終止

[英]log4j2 asynchronous logger thread is not killed

我正在使用Asyn Appender創建一個示例Log4j2配置,執行完成后,由AsyncAppender生成的線程不會被殺死嗎? 是Bug還是任何明確配置都可以殺死線程。

我的樣本摘要Appender

<!-- ####################### SUMMARY FILE APPENDER ####################### -->
    <RollingFile name="SUMMARY_ALL" fileName="./logs/summary.log"
        filePattern="logs/$${date:yyyy-MM}/summary-%d{yyyy-MM-dd-HH}-%i.log.gz">
        <PatternLayout>
            <pattern>%d{ISO8601} [%t] %p %c %L - %m%n</pattern>
        </PatternLayout>
        <Policies>
            <TimeBasedTriggeringPolicy interval="6"
                modulate="true" />
            <SizeBasedTriggeringPolicy size="10 MB" />
        </Policies>
    </RollingFile>

樣品記錄儀如下

  <logger name="com.test.learn" level="DEBUG">
<appender-ref ref="Async" />
  </logger>

示例代碼包com.test.learn;

導入org.apache.logging.log4j.LogManager;

public class TestLogger {
private static org.apache.logging.log4j.Logger log = LogManager
        .getLogger(TestLogger.class);

public static void main(String[] args) {
    log.info("testing logger");
}

}

執行此操作后,java進程應退出,但不退出。 誰能幫幫我嗎。

這將關閉日志記錄子系統並停止所有異步線程:

    ((LifeCycle) LogManager.getContext()).stop();

(這需要更好地記錄...)

我已升級到log4j2-beta-9,並且工作正常。

在Web應用程序上下文中最適合我的是

org.apache.logging.log4j.LogManager.shutdown();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM