2008-05-02

slf4j的使用

最近看在infoq上面看到slf4j的介绍,就到slf4j的网站上看了看,发现还是不错的。
大部分开发人员最喜欢用的还是log4j,这个其中可能是因为jdk在1.5才用logs的pack。还有部分人使用commons-logger。
log4j不用说,比起jdk和common-logger还是有优势的。commons-logger我认为都不是鸡肋,完全没有使用的必要,要不你就使用log4j要不就直接使用jdk。
下面对slf4j和log4j做一下总结:
(1)大部分人在程序里面会去写logger.error(exception),其实这个时候log4j回去把这个exception tostring。真正的写法应该是logger(message.exception);而slf4j就不会使得程序员犯这个错误。

(2)log4j间接的在鼓励程序员使用string相加的写法,而slf4j就不会有这个问题
你可以使用logger.error("{} is+serviceid",serviceid);

(3)使用slf4j可以方便的使用其提供的各种集体的实现的jar。(类似commons-logger)

(4)从commons--logger和log4j merge非常方便,slf4j也提供了一个swing的tools来帮助大家完成这个merge。
评论
yqp_001 2008-06-13
jdk的log从1.4开始的吧?
herenhuang 2008-05-03
继续跟帖
我的意思是
第1点:
try{

}catch(Exception e)
{

logger.error("",e);//正确的写法
logger.error(e);//错误的写法

}

如果使用slf4j就不会导致程序员出现这个错误。

第2点:
大部分是会这样去写的,不过这样写代码写多就就非常不好看了。使用slf4j就不必须去写
if(logger.isDebugEnabled()),这样代码就会好看的多。
sg552 2008-05-03
回答你的前2个问题:

1。 输出log4j的error, 应该是: logger.error(e,e); 而不是 logger.error(e);

2。 如果你认为log4j的输出会占用资源,请使用条件判断。如:
if(logger.isDebugEnabled()){
logger.debug(" variable:" + variable);
}
实际上,每个INFO,DEBUG级的日志都应该这样写。
commons-logging 也有一样的特性。
发表评论

您还没有登录,请登录后发表评论

herenhuang
搜索本博客
最近加入圈子
存档
最新评论