用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:(改进)
分享到:
相关推荐
举个例子:如果一个程序希望用 log4j 日志工具,那么程序只需针对 slf4j-api 接口编程,然后在打包时再放入 slf4j-log4j12-version.jar 和 log4j.jar 就可以了。 现在还有一个问题,假如你正在开发应用程序所调用...
SLF4J 或 Commons-Logging。 日志 API本身不做任何日志,而是需要特定的日志实现(和相关配置)和日志实现本身之间应该有区别。 与上述区别相匹配的日志 API(或Facades )包括: 日志实现始终提供自己的API,并且...
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
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...
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-...
日志记录: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 ...
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
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....
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....
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+日志+驱动+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日志体系对于程序的调试和维护至关重要,但其...SLF4J通过解耦日志API和具体实现,提高了程序的灵活性和可维护性。 Spring框架在其不同版本中使用了不同的日志策略。在Spring 4中,它默认使用JCL作为日志门面。
基于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
Hibernate3.jar hibernate核心包 antlr-2.7.6.jar 一个语言转换工具(Hibernate利用它实现 HQL 到 SQL 的转换模板相关操作需要包) ...slf4j-api-1.5.8.jar和slf4j-log4j12-1.5.0.jar hibernate使用的一个日志系统
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)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
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....
(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
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处理 ...
slf4j-log4j12:日志记录 a. log4j:日志记录实现 commons-lang3:第三方工具包 Vertx Java a. vertx-web:创建http服务器,http请求路由 b. vertx-hazelcase:集群管理器 1) hazelcast:集群管理器实现 c. vertx-...