【问题标题】:How do I change logger level according to environmen in configuration file in log4j? [duplicate]如何根据 log4j 配置文件中的环境更改记录器级别? [复制]
【发布时间】:2017-11-20 12:26:59
【问题描述】:

我有一个 log4j.xml 配置文件。如果环境变量发生变化,我想更改日志级别。我有多个环境,分别是 DEVELOP、TEST、PREPROD 等。我该怎么做?

开发:

 <Loggers>
    <Root level="debug">
        <AppenderRef ref="Console"/>
    </Root>
 </Loggers>

测试:

 <Loggers>
    <Root level="error">
        <AppenderRef ref="Console"/>
    </Root>
 </Loggers>

【问题讨论】:

    标签: java logging log4j


    【解决方案1】:

    我会说创建几个附加程序,每个设置一个,并具有自己的日志级别。然后在运行时决定获取哪一个,并相应地获取记录器。

    例如:

    log4j.rootLogger=WARN
    log4j.com.yourcompany.package1= DEBUG, appender1, stdout
    log4j.com.yourcompany.package2= INFO, appender2, stdout
    

    然后在文件中定义appender12。您可以将相同的输出文件输入到两个附加程序。在 Java 中创建记录器时,您可以在两者之间进行选择:

    final Logger log = Logger.getLogger(package1.Class1.class);
    // final Logger log = Logger.getLogger(package2.Class2.class);
    

    我没有测试它,但我认为它有效。我相信您也可以在 log4j.xml 定义中使用类名而不是包名。

    【讨论】:

      【解决方案2】:

      我遇到了同样的情况,我在下面做了,

      有单独的log4j配置,后缀为环境。

      log4j-<ENVIRONMENT>.xml
      

      在您的记录器工厂类或减号选项中传递环境并选择正确的文件,

      String log4jFile = "/log4j-" + System.getProperty("ENVIRONMENT") + ".xml";
      String url = LoggerFactory.class.getResource(log4jFile); 
      org.apache.log4j.xml.DOMConfigurator.configure(url);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-14
        • 2021-08-27
        相关资源
        最近更新 更多