gpt4 book ai didi

Java 独立应用程序日志记录异常 (log4j)

转载 作者:行者123 更新时间:2023-11-29 03:36:59 24 4
gpt4 key购买 nike

我有一个独立的 Java 应用程序。应用程序使用了几个库,它由 maven 和“shade”插件管理,以创建一个包含所有依赖项的大 jar。我在将未捕获的异常记录到文件中时遇到问题(应用程序在 linux 上运行)。我配置了 log4j.properties 并添加了滚动文件附加程序。它正在工作,但每当抛出异常时,它都会打印在控制台上而不是配置的日志文件中。基本上,我以包含所有 INFO+ 条目但没有异常(未捕获)的日志文件结束。

这是 log4j.properties:

# Root logger option
log4j.rootLogger=INFO, file

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=logs/my-app.log
log4j.appender.file.MaxFileSize=100MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

我使用以下方式运行应用程序:

java -jar -Dlog4j.configuration=file:log4j.properties myApp.jar

目前我使用控制台 appender 和运行应用程序绕过了这个问题:

java -jar -Dlog4j.configuration=file:log4j.properties myApp.jar >> logs/my-app.log 2>&1

...但我真的很想使用滚动文件附加程序。

最佳答案

找到解决此类问题的方法。这很容易。您需要在“主”类中添加 DefaultUncaughtExceptionHandler。这是片段:

    Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {

@Override
public void uncaughtException(Thread t, Throwable e) {
logger.error("Uncaught exception", e);
}
});

关于Java 独立应用程序日志记录异常 (log4j),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14976348/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com