似乎log4j有一些类加载问题(等等),在我看来趋势是从log4j移出slf4j.(Hibernate停止使用第一个支持后者)
更新:
您似乎偶然发现了log4j(以及Apache Commons Logging库)的主要问题,即他们在使用时发现并与正确的类加载器进行交互时非常困难.这里有一个非常密集的解释,有完整的例子; 带回家的信息是,新的日志框架SLF4J的主要推动力之一就是完全消除这些问题.你可能想要交换它,看看你的生活是否变得更容易.
Bal*_*usC 47
Slf4j确实只是一个日志记录.但是,Log4j旨在由同一作者的Logback取代.
更新:如果您想了解Slf4j的另一个好处,那就是不再需要以下(丑陋)构造来避免toString()不必要的调用:
if (logger.isDebugEnabled()) {
logger.debug("Message: " + bigObject + ", " + anotherBigObject);
}
Run Code Online (Sandbox Code Playgroud)
您可以改为使用参数化消息:
logger.debug("Message: {}, {}", bigObject, anotherBigObject);
Run Code Online (Sandbox Code Playgroud)
另请参阅(不)记录的最快方法是什么?
EJB*_*EJB 18
Slf4J不是Log4j的替代品,而是提供了一个用于日志记录的Facade,因此您可以插入自己的日志框架.它主要用于图书馆.来自slf4j.org:
对于Java或(SLF4J)简单记录门面用作简单门面或抽象的各种日志框架,例如java.util.logging中,log4j的和的logback,允许最终用户在在部署时所需的日志框架插头.
回答你的问题:Slf4j现在被框架采用,但在你的项目中,你可以继续使用Log4J(或任何其他)
第一:重要的一点:Slf4j是前端日志记录(API),它可以在大多数主要的登录系统中使用:例如log4j或java.util.logging.因此,将sfl4j与commons-logging进行比较会更好.
关于Log4j的状态,引用来自java的日志记录(一年前)
我没有意识到的一件事是log4j开发基本上已经死了.目前版本为1.2,版本1.3的计划被放弃,转而开发log4j 2.0.但是,2.0似乎没有正在积极开发中.值得注意的是,log4j项目的最初创始人CekiGülcü已经转向slf4j(见下文).
查看slf4j页面看起来它不会取代 log4j - 它只允许您为整个应用程序使用相同的底层日志记录框架(例如log4j),允许库自动挂钩.
它看起来更像是Apache Commons Logging的替代品,而不是log4j.