0
如果我需要在封裝級的閾值設置爲INFO
我可以設置爲我的包MyPck
像:指定級別爲特定類
log4j.logger.MyPck=INFO,debugLogFile
我有可能使門檻不包,但在一流水平?喜歡的東西:
log4j.logger.MyPck.MyClass=INFO,debugLogFile
如果我需要在封裝級的閾值設置爲INFO
我可以設置爲我的包MyPck
像:指定級別爲特定類
log4j.logger.MyPck=INFO,debugLogFile
我有可能使門檻不包,但在一流水平?喜歡的東西:
log4j.logger.MyPck.MyClass=INFO,debugLogFile
簡短的回答是是。
但是,默認,每個記錄器繼承了它的父的屬性。例如: -
考慮簡單的Java類:
package com.abc;
import org.apache.log4j.Logger;
class AnotherClass {
private static Logger LOG = Logger.getLogger(AnotherClass.class);
public AnotherClass() {
LOG.trace("Instance created of AnotherClass");
}
}
public class MyClass {
private static Logger LOG = Logger.getLogger(MyClass.class);
public MyClass() {
LOG.trace("Instance created of MyClass");
}
public void foo() {
LOG.info("Executing foo()...");
}
public static void main(String[] args) {
new MyClass().foo();
new AnotherClass();
}
}
而且log4j.properties
:
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.layout=org.apache.log4j.SimpleLayout
log4j.logger.com.abc=TRACE,STDOUT
log4j.logger.com.abc.MyClass=INFO,STDOUT
在這個例子中,STDOUT
配置到記錄器com.abc
。所以,com.abc.MyClass
繼承和寫入即對象。見輸出:
INFO - Executing foo()...
INFO - Executing foo()...
TRACE - Instance created of AnotherClass
這是怎麼回事?爲什麼兩次?酒店additivity
可以防止這種傳播。
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.layout=org.apache.log4j.SimpleLayout
log4j.logger.com.abc=TRACE,STDOUT
log4j.logger.com.abc.MyClass=INFO,STDOUT
log4j.additivity.com.abc.MyClass=false
所以,我們會看到:
INFO - Executing foo()...
TRACE - Instance created of AnotherClass