我已经使用Eclypse开发了一个Dynamic Web Project,并且我想使用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
格式,因此不需要其他软件包。
我在做什么错了?
答案 0 :(得分:1)
创建一个Logger类,例如MyLogger,Log4j2从属性“ log4j.configurationFile”中查找配置文件的位置,并在该类的静态块中设置该属性。这将确保在启动期间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");
}
}