gpt4 book ai didi

java - Log4j 不会记录到文件,只会记录到控制台

转载 作者:行者123 更新时间:2023-11-28 22:03:29 25 4
gpt4 key购买 nike

我想使用 log4j 在我的 Tomcat 网络应用程序上进行一些日志记录。我有一个数据访问类,它应该记录 Activity ,例如请求用户的信息等。我已经向我的 rootlogger 添加了一个文件处理程序和一个控制台处理程序,我完全能够在控制台中看到正确的日志消息,但不幸的是不在指定的文件中。

我的代码如下:

imports...

public class UserDao {
private final Logger logger = Logger.getRootLogger();

public UserDao() {
FileAppender fa = new FileAppender();
fa.setLayout(new PatternLayout("%d{yyyy-MM-dd HH:mm:ss.SSSS} %p %t %c \u2013 %m%n"));
fa.setName("UserDaoFileAppender");
fa.setFile("UserDao.log");
fa.setThreshold(Level.INFO);
fa.setAppend(true);
fa.activateOptions();
logger.addAppender(fa);

ConsoleAppender ca = new ConsoleAppender();
ca.setLayout(new PatternLayout("%d{yyyy-MM-dd HH:mm:ss.SSSS} %p %t %c \u2013 %m%n"));
ca.setThreshold(Level.WARN);
ca.activateOptions();
logger.addAppender(ca);

logger.warn("Test warning");
logger.error("Test error");
logger.info("Test info");
logger.debug("test debug");
}

// Rest of the class.

}

我曾尝试使用属性文件方式来设置 appender-configuration,但我始终无法让它工作。我尝试将它放在 WEB-INF/classes 文件夹和 src-root 中,正如这里有些人所建议的那样。

最佳答案

您正在为 FileAppender 使用无参数构造函数。请使用至少有 2 个参数的构造函数。

FileAppender fa = new FileAppender();
fa.setLayout(new PatternLayout("%d{yyyy-MM-dd HH:mm:ss.SSSS} %p %t %c \u2013 %m%n"));

将这两行替换为以下内容:

FileAppender fa = new FileAppender(new PatternLayout("%d{yyyy-MM-dd HH:mm:ss.SSSS} %p %t %c \u2013 %m%n"), "path of the log file");

关于java - Log4j 不会记录到文件,只会记录到控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12769791/

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