我使用 Eclypse 开发了一个动态 Web 项目,我想使用 log4j2 将信息和错误记录到文件中。
我制作了配置文件,但是当我启动应用程序时出现这个错误:
ERROR StatusLogger No Log4j 2 configuration file found. Using default configuration (logging only errors to the console), or user programmatically provided configurations.
根据文档,log4j2 应该在 WEB-INF 目录中寻找 log4j2.*
文件,但即使该文件在那里,我的应用程序仍然看不到它。
该文件为.properties
格式,因此不需要额外的包。
我做错了什么?
最佳答案
创建一个 Logger 类,比如 MyLogger,Log4j2 从属性“log4j.configurationFile”中查找配置文件位置,在类的静态 block 中设置该属性。这将确保配置文件位置在启动期间对 Log4j2 可用。您可以将配置文件放在应用程序外部。
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.io.File;
public class MyLogger {
static { System.setProperty("log4j.configurationFile",System.getProperty("prop.loc")+File.separator+"MyLog4j2.xml");
}
public static Logger getLogger(Class<?> clazz){
return LogManager.getLogger(clazz);
}
}
如下调用类初始化记录器
public class MyClass {
private static final Logger logger = MyLogger.getLogger(MyImpl.class);
public myMethod(){
logger.info("My logs");
}
}
关于java - log4j2 找不到配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51152355/