我有一个log4j.xml配置文件。如果环境变量发生变化,我想更改日志级别。我有多种环境,包括DEVELOP,TEST,PREPROD等。我该怎么做?
DEVELOP:
<Loggers>
<Root level="debug">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
TEST:
<Loggers>
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
答案 0 :(得分:0)
我想说创建几个appender,每个设置一个,并有自己的日志级别。然后在运行时决定获取哪一个,并相应地获取记录器。
例如:
log4j.rootLogger=WARN
log4j.com.yourcompany.package1= DEBUG, appender1, stdout
log4j.com.yourcompany.package2= INFO, appender2, stdout
然后在文件中定义appender1
和2
。您可以为两个appender输入相同的输出文件。在Java中创建记录器时,您可以在两者之间进行选择:
final Logger log = Logger.getLogger(package1.Class1.class);
// final Logger log = Logger.getLogger(package2.Class2.class);
我没有测试它,但我认为它有效。我相信您也可以在log4j.xml
定义中使用类名而不是包名。
答案 1 :(得分:0)
我遇到了同样的情况,我在下面做了,
将单独的 log4j配置与后缀作为环境。
log4j-<ENVIRONMENT>.xml
在您的记录器工厂类或减号选项中,传递环境并选择正确的文件
String log4jFile = "/log4j-" + System.getProperty("ENVIRONMENT") + ".xml";
String url = LoggerFactory.class.getResource(log4jFile);
org.apache.log4j.xml.DOMConfigurator.configure(url);