`
zeroliu
  • 浏览: 192984 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

日志API改进:用commons-log还是slf4j?这是一个问题!

阅读更多
用commons-log还是slf4j?这是一个问题!
看jdk中的logger不爽,最早直接用Log4j,后来参考Spring主要用commons-log,再后来看见很多新的开源项目如mina2等都采用了slf4j日志系统。我个人还是比较喜欢格式化的输出的方式,避免Spring中大量出现的 if (_log.isDebugEnabled())条件判断语句。对slf4j还有点不爽的,就是后面的参数最多只能定义2个。在jdk1.5中,允许定义可变数目的参数,因而可以有更好的封装方式。可以定义如下,那么以后封装的系统,只有MyLog与日志API直接依赖(commons-log、slf4j),所以很容易在不同的日志系统间切换。
public interface MyLogInf {
    public void debug(String message, Object... args);
    public void info(String message, Object... args);
    public void warn(String message, Object... args);
    public void error(Throwable e, String message, Object... args);
    public boolean isDebugEnabled();//仅仅用于打印辅助调试信息(而在debug()中已经,无需单独代码调用)
}

public class MyLog implements MyLogInf{
    public static MyLog getLog(Class clz)	{ return new MyLog(clz.getName());  }
    public static MyLog getLog(String clz) 	{ return new MyLog(clz);    		}
    static MyLogInf getLogger()				{ return getLog(MyLog.class);		}
	//------------------ 方案1
//	private org.apache.commons.logging.Log _log = null;
//	public MyLog(String clz) { _log = org.apache.commons.logging.LogFactory.getLog(clz);}
	//------------------ 方案2
	private org.slf4j.Logger _log = null;
    public MyLog(String clz) { _log = org.slf4j.LoggerFactory.getLogger(clz);}
	//------------------
    public void debug(String message, Object... args){
    	if (_log.isDebugEnabled())	_log.debug(String.format(message, args));
    }
    public void info(String message, Object... args) {
    	if (_log.isInfoEnabled())	_log.info(String.format(message, args));
    }
    public void warn(String message, Object... args){
    	if (_log.isWarnEnabled())	_log.warn(String.format(message, args));
    }
    public void error(Throwable e, String message, Object... args){
    	if (_log.isErrorEnabled())	_log.error(String.format(message, args), e);
    }
	//------------------
    public boolean isDebugEnabled() { return _log.isDebugEnabled();    }
}


参考:http://hi.baidu.com/zeorliu/blog/item/41b355ed1dcca6d2b31cb1a9.html 可替代commons-logging的SLF4J:(改进)
2
0
分享到:
评论
3 楼 zeroliu 2009-03-11  
flyfan 写道

早已从commons-logging转到SLF4J,log4j转到logback

因为很多地方使用了spring,所以还得依赖于commons-logging包。
所以后来才自定义一个MyLog类,屏蔽底层日志的差别了。听说logback很好而且还快,但暂时还没用过。需要时直接用MyLog包装一下就能很快切换过去。
2 楼 piggy 2009-02-27  
引用
对slf4j还有点不爽的,就是后面的参数最多只能定义2个。


同感.
1 楼 flyfan 2009-02-12  
早已从commons-logging转到SLF4J,log4j转到logback

相关推荐

    jcl-over-slf4j-1.7.25.jar 由于下载次数较多,所需积分上去了,我已下调

    举个例子:如果一个程序希望用 log4j 日志工具,那么程序只需针对 slf4j-api 接口编程,然后在打包时再放入 slf4j-log4j12-version.jar 和 log4j.jar 就可以了。 现在还有一个问题,假如你正在开发应用程序所调用...

    考试系统源码java-org.ops4j.pax.logging:OSGi日志框架实现。支持SLF4J、LOG4J、JCL等

    SLF4J 或 Commons-Logging。 日志 API本身不做任何日志,而是需要特定的日志实现(和相关配置)和日志实现本身之间应该有区别。 与上述区别相匹配的日志 API(或Facades )包括: 日志实现始终提供自己的API,并且...

    log4j-1.2.17.jar、logback-core-1.1.2.jar、slf4j-simple-1.7.12.jar等

    commons-logging-1.2.jar、log4j-1.2.17.jar、logback-classic-1.1.2.jar、logback-core-1.1.2.jar、slf4j-api-1.7.12.jar、slf4j-jcl-1.7.12.jar、slf4j-simple-1.7.12.jar

    最新配套的hibernate包,日志为log4j,hibernate二级缓存包等

    commons-logging-1.1.1.jar,dom4j-1.6.1.jar,ehcache-1.5.0.jar,hibernate3.jar,hibernate-jpa-2.0-api-1.0.0.Final.jar,javassist-3.12.0.GA.jar,jta-1.1.jar,slf4j-api-1.6.1.jar,slf4j-log4j12-1.6.1.jar...

    Hibernate框架jar包

    slf4j-log4j12-1.7.2.jar log4j-1.2.16.jar jboss-logging-3.3.0.Final.jar geronimo-jta_1.1_spec-1.1.1.jar junit-4.9.jar mysql-connector-java-5.1.7-bin.jar hibernate-jpa-2.1-api-1.0.0.Final.jar antlr-...

    ssh框架所需整合的所有42个jar包

    日志记录:slf4j-log4j12-1.7.6.jar spring:IOC: spring-beans-3.2.4.RELEASE.jar spring-context-3.2.4.RELEASE.jar spring-core-3.2.4.RELEASE.jar spring-expression-3.2.4.RELEASE.jar ...

    MyEclipse_9创建SSH2开发环境必须的独立包

    struts2 相关包-------------------------------------------------- xwork-2.0.5.jar webwork的核心库 ognl-2.6.11.jar OGNL...slf4j-log4j12-1.5.0.jar slf4j log4j支持包 log4j-1.2.15.jar slf4j-api-1.5.0.jar

    web项目常用jar包及说明.zip

    2.commons-logging-1.1.1.jar(ASF出品的日志包,struts2 2、spring、hibernate框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录) 3.common-annotations.jar(支持注解的包) 4.aspectjrt.jar(支持AOP的包) 5....

    SSH 项目 整合jar包

    2.commons-logging-1.1.1.jar(ASF出品的日志包,struts2 2、spring、hibernate框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录) 3.common-annotations.jar(支持注解的包) 4.aspectjrt.jar(支持AOP的包) 5....

    SSH 框架所需JAR包

    2.commons-logging-1.1.1.jar(ASF出品的日志包,struts2 2、spring、hibernate框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录) 3.common-annotations.jar(支持注解的包) 4.aspectjrt.jar(支持AOP的包) 5....

    mybatis项目全部驱动.zip

    mybatis+日志+驱动+junit包 asm-3.3.1 cglib-2.2.2 commons-logging-1.1.1 javassist-3.17.1-GA junit-4.9 ...log4j-1.2.17 ...log4j-api-2.0-rc1 ...log4j-core-2.0-rc1 ...slf4j-api-1.7.5 ...slf4j-log4j12-1.7.5

    Java日志体系全解析:架构师必掌握的关键技术和最佳实践

    Java日志体系对于程序的调试和维护至关重要,但其...SLF4J通过解耦日志API和具体实现,提高了程序的灵活性和可维护性。 Spring框架在其不同版本中使用了不同的日志策略。在Spring 4中,它默认使用JCL作为日志门面。

    基于iText和flying saucer结合freemark生成pdf 范例

    基于iText和flying saucer结合freemark生成pdf 范例 1. 使用maven构建,不含jar包,可以自行使用maven下载依赖包, 2. 使用前需要将C:/Windows/Fonts/ARIALUNI.TTF 复制到doc-render/src/test/...slf4j-api-1.7.5.jar

    hibernate核心包

    Hibernate3.jar hibernate核心包 antlr-2.7.6.jar 一个语言转换工具(Hibernate利用它实现 HQL 到 SQL 的转换模板相关操作需要包) ...slf4j-api-1.5.8.jar和slf4j-log4j12-1.5.0.jar hibernate使用的一个日志系统

    web开发常用jar

    slf4j-api-1.5.8.jar和slf4j-log4j12-1.5.0.jar hibernate使用的一个日志系统 spring.jar spring核心包 spring-security-core-2.0.4.jar 和 spring-security-taglibs-2.0.4.jar 权限管理 commons-codec-...

    SSM三大框架整合所需jar包+日志/缓存/验证码/ajax/数据校验全部jar包

    1)Spring 【AOP核心】 ... spring-aspects-4.0.0.RELEASE.jar 【IOC核心】 ... slf4j-log4j12-1.7.21.jar 4)其他 【数据源 驱动】 c3p0-0.9.5.4.jar mysql-connector-java-8.0.18.jar

    java开发常用jar包

    slf4j-api-1.5.8.jar和slf4j-log4j12-1.5.0.jar hibernate使用的一个日志系统 spring.jar spring核心包 spring-security-core-2.0.4.jar 和 spring-security-taglibs-2.0.4.jar 权限管理 commons-codec-1.3....

    spring+dubbo所需要的jar包

    (1)commons-logging-1.2.jar //日志包 (2)spring-beans-3.2.3.RELEASE.jar //bean包 (3)spring-context-3.2.3.RELEASE.jar...(11)slf4j-api-1.7.12.jar (12)zkclient-0.1.jar  (13)zookeeper-3.4.13.jar

    wx-tools的jar及其依赖包

    org.slf4j -> slf4j-api ch.qos.logback -> logback-classic http org.apache.httpcomponents -> httpclient org.apache.httpcomponents -> httpmime JSON处理 org.codehaus.jackson -> jackson-mapper-asl XML处理 ...

    aidejava源码-mendora2.0:门多拉2.0

    slf4j-log4j12:日志记录 a. log4j:日志记录实现 commons-lang3:第三方工具包 Vertx Java a. vertx-web:创建http服务器,http请求路由 b. vertx-hazelcase:集群管理器  1) hazelcast:集群管理器实现 c. vertx-...

Global site tag (gtag.js) - Google Analytics