gpt4 book ai didi

java - 为什么我的日志被删除?

转载 作者:行者123 更新时间:2023-12-02 03:14:45 27 4
gpt4 key购买 nike

我有一个使用 log4j 作为日志记录 jar 的 java 应用程序,但是当我尝试调试我的应用程序并打开日志文件时,我发现它很短,并且只有我记录的最后几行,并且旋转文件没有显示任何内容我以前见过的日志。

我的配置文件有问题吗?我有多个项目指向同一个日志文件,这可能是问题所在吗?

这是我的 log4j.properties:

log4j.rootLogger=ERROR,logfile

log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=/opt/tomcat7/logs/mylogs.log

log4j.appender.logfile.MaxFileSize=500KB
# Keep one backup file
log4j.appender.logfile.MaxBackupIndex=2

log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %5p (%F:%L) - %m%n

谢谢

最佳答案

您将根记录器的级别指定为 ERROR,而在大多数情况下,不会有很多 ERROR 消息 - 也许每条 INFO 级别消息只有一到两个,而您却抑制了它们:ERROR 级别仅允许 ERROR 和 FATAL要记录的消息。它会过滤出任何信息、警告、调试、跟踪级别。通常您不会在开发中使用此类设置。在生产中,您通常只抑制一些详细的类/包,而不是您发布的配置中的所有内容(意味着这里的错误级别适用于每个类)。

所以我想你应该在配置中将 ERROR 替换为 INFO。

更新:log4j 也可能根本看不到您的配置文件。我个人多次遇到这个问题,每次我都有这样的解决方法:

public class Log4JProperties {

public static void setupLog4j(){
String log4jPathFile = Log4JProperties.class.getResource("/log4j.properties").getFile();

Properties props = new Properties();
try {
InputStream configStream = new FileInputStream(log4jPathFile);
props.load(configStream);
configStream.close();
} catch (IOException e) {
System.out.println("log4j configuration file not found");
}
LogManager.resetConfiguration();
PropertyConfigurator.configure(props);
}

}

当我从 Intellij 内部运行代码时,这是不必要的,但是当我使用 Maven 运行时,如果不在执行开始时调用此函数,日志记录将无法工作。

关于java - 为什么我的日志被删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40477306/

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