2015-09-14 91 views
0

嗨大家在这里使用Log4j时遇到了问题。安卓log4j多次登录

我的代码是

public class MyLogger{ 
    private static Logger mLogger = LoggerFactory.getLogger(MyLogger.class); 

    public static void configure() { 
     LogConfigurator logConfigurator = new LogConfigurator(); 
     logConfigurator.setFileName(getLogPath()); 
     logConfigurator.setRootLevel(Level.DEBUG); 
     logConfigurator.setLevel("com.**", Level.ALL); 
     logConfigurator.setMaxFileSize(1024 * 1024 * 5); 
     logConfigurator.configure(); 
    } 

    public static void info(String msg) { 
     mLogger.info(msg); 
    } 

    public static void warn(String msg) { 
     mLogger.warn(msg); 
    } 

    public static void debug(String msg) { 
     mLogger.debug(msg); 
    } 

    public static void error(String msg) { 
     mLogger.error(msg); 
    } 

此代码的工作,但我发现它是多次记录。我试着在这里阅读一些教程,他们说我需要添加additivity =“false”,但该功能在Jar文件上不可用。

+0

Logger类已'setAdditivity'从'Category'的。你尝试过吗? – Fildor

+0

@Fildor你是什么意思的类别?到目前为止,我所做的是添加jar文件并创建该类。我需要创建一个类别吗? – Janwel

+0

不,“类别”是Logger类的不赞成使用的前身。它继承'setAdditivity'方法。所以如果你以编程方式配置你的记录器,你应该可以通过使用'mLogger.setAdditivity(false)'来设置这个属性。不过,在第一次登录之前不确定这是否必须完成。 – Fildor

回答

0

给定记录器的每个启用的记录请求将被转发给该记录器中的所有appender,以及层次结构中较高的appender。

检查log4j.properties和做出改变有其设置为false:

log4j.additivity.com.javacodegeeks.examples.log4jadditivity.theClass=false