用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:(改进)
分享到:
相关推荐
这个库提供了一个API,开发者可以使用这个API来记录日志,而无需关心底层的日志系统是log4j、java.util.logging还是其他。然而,commons-logging自身并不提供具体的日志实现,而是作为一个接口,让开发者能够根据...
SLF4J提供了一个统一的日志API,允许开发者选择任意的日志实现,比如Logback或Log4j。 `jcl-over-slf4j-1.6.0.jar`是SLF4J提供的一个桥接包,它的主要作用是将JCL的日志调用透明地重定向到SLF4J。这样做的好处是,...
举个例子:如果一个程序希望用 log4j 日志工具,那么程序只需针对 slf4j-api 接口编程,然后在打包时再放入 slf4j-log4j12-version.jar 和 log4j.jar 就可以了。 现在还有一个问题,假如你正在开发应用程序所调用...
SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它提供了一个接口,允许用户在运行时动态地绑定到各种具体的日志框架,如Log4j、Java内置的日志或者Logback等。这个设计使得开发者可以在不修改...
6. **日志适配器**:`commons-logging-1.2.jar`是Apache Commons Logging库,它提供一个日志API的抽象层,可以透明地使用各种日志实现,包括我们前面提到的Log4j。 整合Spring与MyBatis的步骤通常包括以下几步: 1...
SLF4J(Simple Logging Facade for Java)和Apache Commons Logging是两个在Java开发中广泛使用的日志框架。它们提供了一种抽象层,允许开发者在不修改代码的情况下切换不同的日志实现,如Log4j、Java Util Logging ...
SLF4J是一个接口层的日志框架,它提供一个统一的API,允许用户在运行时插入任意的日志实现,如Logback或Log4j。它的核心理念是解耦日志库的实现与应用代码,使得更换日志框架变得灵活且无需修改代码。SLF4J通过`slf4...
SLF4J(Simple Logging Facade for Java)是Java日志框架的一个接口层,它提供了一个统一的日志API,允许用户在部署时插入所需的日志实现。SLF4J的主要目的是为各种日志框架,如log4j、logback、java.util.logging等...
SLF4J提供了一个更简洁的API,并且设计上更侧重于避免类加载器问题,而Logback则是一个高性能的日志实现,与SLF4J紧密集成。因此,在新项目中,许多开发者倾向于选择SLF4J和Logback的组合,以获得更好的性能和可维护...
接下来,`SLF4J(Simple Logging Facade for Java)1.5.8`是一个用于各种日志API的简单抽象,允许最终用户在部署时插入所需的日志框架。SLF4J提供了一个绑定机制,允许开发者在编译时或运行时选择特定的日志实现,如...
SLF4J(Simple Logging Facade for Java)是Java日志记录的一个接口层,它为各种日志框架,如Log4j、Java Util Logging、Logback等,提供了一个统一的API,使得开发者可以在运行时选择具体使用的日志实现。...
2. **slf4j-log4j12.jar**:这是一个绑定包,用于将SLF4J接口与Log4j日志框架绑定。如果你的项目中已经使用了Log4j作为日志系统,那么可以引入这个jar包,SLF4J将会通过这个绑定将日志消息传递给Log4j。 3. **slf4j...
3. `log4j-slf4j-impl-2.11.2.jar`: 如果你希望使用SLF4J(Simple Logging Facade for Java)作为日志API,这个JAR提供了Log4j的实现。 4. `log4j-jul-2.11.2.jar`: 用于与Java Util Logging(JUL)接口集成的适配器...
`slf4j-jcl-1.7.7.zip`这个压缩包包含了SLF4J与Jakarta Commons Logging(JCL)的适配器,JCL是一个早期的日志抽象层,SLF4J通过这个适配器使得JCL的用户可以无缝切换到SLF4J,享受更好的日志管理。 **Jakson API**...
SLF4J(Simple Logging Facade for Java)作为一个新兴的日志框架,由Ceki Gülcü开发,旨在提供一个简单而统一的日志接口,以替代commons-logging。其主要目标是降低应用对具体日志实现库的依赖,并允许用户在部署...
**Logback**是一个开源日志框架,由Log4j的作者Ceki Gülcü开发。Logback以其高性能、灵活的配置以及强大的功能而著称。它旨在提供比Log4j更优秀的表现,并与SLF4J紧密集成,成为SLF4J推荐的日志实现之一。 **主要...
- Commons Logging是一个轻量级的日志记录API,允许开发者在不修改代码的情况下切换不同的日志实现,如Log4j、Java Util Logging或SLF4J。 - 版本 1.2 是一个稳定版本,虽然较旧但广泛兼容,为各种Java项目提供...
3. 集成SLF4J:虽然SLF4J本身是一个接口,但可以通过桥接器(如slf4j-jdk14.jar或slf4j-log4j12.jar)将SLF4J与Commons Logging连接起来。 五、优缺点分析 优点: - 提供了日志接口的统一,简化了代码。 - 动态...
Commons-Logging是Apache软件基金会开发的一个Java日志抽象层,它为各种日志框架提供了一个统一的接口,包括Log4j、Java内置的日志API(java.util.logging)以及Simple Logging Facade for Java (SLF4J)。这个库的...
在实际开发中,为了规避潜在的问题,有的开发者选择使用其他的日志框架,如SLF4J(Simple Logging Facade for Java),它同样提供了一个抽象层,但比`commons-logging`更现代,且有更明确的绑定机制。 总的来说,`...