2013-10-29 87 views
0

如果我需要在封裝級的閾值設置爲INFO我可以設置爲我的包MyPck像:指定級別爲特定類

log4j.logger.MyPck=INFO,debugLogFile 

我有可能使門檻不包,但在一流水平?喜歡的東西:

log4j.logger.MyPck.MyClass=INFO,debugLogFile 

回答

0

簡短的回答是


但是,默認,每個記錄器繼承了它的父的屬性。例如: -

考慮簡單的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