我正在使用Asyn Appender创建一个示例Log4j2配置,执行完成后,AsyncAppender生成的线程没有被杀死?是一个错误或任何配置明确杀死线程。
我的示例摘要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;
import 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();