日期:2014-05-20  浏览次数:20818 次

关于Log4j我有个问题一直很疑惑!希望能得到解决


方法1:
我自己用的时候都是写一个Log类里面对log4j大概封装了一下!
public static void runLoger(int level,String info)
{
case 1
logger.debug(info);
.
.
.
case 4
logger.error(info);
}


然后需要写日志调用的时候,调用类似下面的
Log.runLoger(1,"print info");

方法2:

但是我看很多人用的时候,都在该类的最开始写类似下面这句
public static Logger logger = org.apache.log4j.Logger.getLogger(该类的类名.class.getName());
然后需要写日志的时候,调用类似下面的语句写日志
logger.error("errorInfo");


但是我基本没看到我这样写的人!我感觉我这种写法很简单起码不用每个需要写日志的类都要写
上public static Logger logger = org.apache.log4j.Logger.getLogger(该类的类名.class.getName());
这么一句!但是我看别人没这样用的。我想是不是我这样用牵扯并发写log文件问题;不知道我这样用到底
行不行?有没有什么问题啊?

------解决方案--------------------
比如某一个类(aaa.bbb.ccc.Xyz)的日志级别与其他的不一样,就可以设为:

log4j.logger.aaa.bbb.ccc.Xyz=DEBUG

这样就可以单独地对这个类进行配置了,而 log4j.logger. 后面的就是根据日志记录器的名字来判断的。

你的方法 1 的不好之处在于:

1,没有办法对日志记录器进行命名,你现在只有统一的名字。
2,在输出日志级别提高后,没有一定的检测手段来判断日志级别,得让 Log4j 去判断,像这样:

Java code
         if (log.isDebugEnabled()) {
            log.debug("xxxxxx");
        }