log4j2找不到配置文件

时间:2018-07-03 10:31:26

标签: java logging log4j2

我已经使用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格式,因此不需要其他软件包。

我在做什么错了?

1 个答案:

答案 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");
    }
}