java - log4j2 找不到配置文件

标签 java logging log4j2

我使用 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/

相关文章:

c# - 如何登录Unity安卓游戏?

java - Apache Log4j 自定义电子邮件附加程序未发送邮件,应用程序启动时出现错误通知

java - 使用log4j2 2.5归档日志文件

java - 按需重新加载 log4j2 配置

Java 单元测试 - 适当的隔离?

java - 摩尔斯电码闪光时间

java - IntelliJ 找不到 LocalDate.of() 方法

java - 如何在网页上运行 Swing 应用程序?

json - 使用filebeat记录-将JSON提取到JS文件

ios - iOS 的日志记录框架?