有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java外部log4j2配置文件

我有一个使用log4j2作为日志系统的springweb应用程序。 log4j2:2.6.2 slf4j:1.7.21

我有一个log4j2。生产中使用的类路径中的xml

我想使用不同的配置文件进行开发,尤其是在从Eclipse运行服务器时

我试图添加-Dlog4j。configurationFile=C:\Dev\log4j2。将xml转换为eclipse中的默认VM参数以及服务器参数,但到目前为止运气不好,它总是选择log4j2。来自类路径的xml

有什么想法吗

多谢各位


共 (4) 个答案

  1. # 1 楼答案

    尝试使用file:前缀在文件前面加前缀-Dlog4j.configurationFile=file:///C:/Dev/log4j2.xml

    如果使用的是spring属性文件,还可以执行以下操作:

    logging.config = file:///C:/Dev/log4j2.xml
    
  2. # 2 楼答案

    我尝试了下面的方法,它对我有效

    字符串fullyQualifiedFilePath=“/mnt/test/log4j2local.properties”; 配置器。初始化(null,fullyQualifiedFilePath)

  3. # 3 楼答案

    我们需要配置外部日志文件,如果不存在,则使用WEB-INF中的默认配置文件

    下面是我们项目中的代码,我在WEB-INF中使用了加载外部配置日志文件(如果存在),如果没有加载默认值:

    public class Log4jLoader extends Log4jServletContextListener {
    
      private String LOG_FROM_CLASSPATH = "WEB-INF/log4j2.xml";
    
      @Override
      public void contextInitialized(ServletContextEvent event) {
        File f = new File(getLog4jPath());
        String path = f.exists() ? f.getAbsolutePath() : getFilefromClassPath(event);
        Configurator.initialize(null, path);
        LoggerFactory.getLogger(Log4jLoader.class)
            .info("load log4j2 from: {}", path);
      }
      private String getLog4jPath(){
           return "logFilePath";
      }
    }
    
  4. # 4 楼答案

    你可以用两种方式做这件事

    1. 应用程序。性质
    2. 运行配置下的VM参数

    案例1:应用程序属性

    (Mac OS) 登录中。config=file:/Users/XXX/XXX/XXX/log4j2。xml

    (Windows操作系统) 登录中。配置=文件:/XXX/XXX/XXX/log4j2。xml

    案例2:项目运行配置

    -记录。config=/Users/XXX/XXXX/log4j2。xml

    希望这有助于解决您的问题

    干杯