java log4j slf4j_java-Log4j是否被Slf4j抛弃了?

java-Log4j是否被Slf4j抛弃了?

看来log4j存在一些类加载问题(其中包括其他问题),在我看来,趋势是从log4j转向slf4j。 (Hibernate停止使用第一个来支持后者)

是真的吗

slf4j解决的log4j主要问题是什么?

slf4j是硬道理还是有更好的“下一个下一个log4j”行业标准?

更新:

因此,delfuego的这个答案使我感到困惑,您可以接受/反对吗?:

您似乎偶然发现了   log4j的主要问题(以及   Apache Commons Logging库),   即他们有一个荒谬的   很难发现和互动   使用正确的类加载器   正在使用。 有一个非常密集的   说明,并附有示例,   这里; 带回家的消息是   的主要驱动力之一   新的日志记录框架SLF4J是为了   彻底消除这些问题。 您   可能想交换它,看看是否   您的生活变得更加轻松。

log4j的更多类加载问题:[http://articles.qos.ch/classloader.html]

ruchirhhi asked 2020-02-13T07:55:52Z

6个解决方案

47 votes

Slf4j确实只是一个伐木的门面。 但是,来自相同作者的Log4打算由Logback继承。

更新:如果您想了解Slf4j的另一个好处,那就是事实,不再需要以下(丑陋的)构造来避免不必要地调用toString():

if (logger.isDebugEnabled()) {

logger.debug("Message: " + bigObject + ", " + anotherBigObject);

}

您可以改为使用参数化消息:

logger.debug("Message: {}, {}", bigObject, anotherBigObject);

另请参阅什么是最快的(不是)日志记录方式?

BalusC answered 2020-02-13T07:56:24Z

18 votes

Slf4J不是Log4j的替代品,而是提供了一个Facade来进行日志记录,因此您可以插入自己的日志记录框架。 它主要用于库。来自slf4j.org:

Java或Java的简单日志记录外观   (SLF4J)作为简单的外观或   各种日志的抽象   框架,例如 java.util.logging,   log4j和logback,允许结束   用户插入所需的日志记录   部署时使用框架。

回答您的问题:框架正在采用Slf4j,但是在您的项目中,您可以继续使用Log4J(或任何其他)

EJB answered 2020-02-13T07:56:54Z

7 votes

首先:要点:Slf4j是前端日志记录(API),它可以在大多数主要的loggin系统下面使用:例如log4j或java.util.logging。 因此最好将sfl4j与commons-logging进行比较。

关于Log4j的状态,引自Java日志记录的状态(一年前)

我尚未意识到的一件事是,log4j开发实质上已经死了。 它目前的版本为1.2,而为了开发log4j 2.0而放弃了版本1.3的计划。 但是,2.0似乎没有在积极开发中。 值得注意的是,log4j项目的最初创始人CekiGülcü已转到slf4j(请参见下文)。

Kartoch answered 2020-02-13T07:57:24Z

6 votes

查看slf4j页面似乎并不能代替log4j-它仅允许您对整个应用程序使用相同的基础日志记录框架(例如log4j),从而允许库自动挂钩。

它看起来更像是Apache Commons Logging的替代品,而不是log4j。

Jon Skeet answered 2020-02-13T07:57:50Z

3 votes

我认为,SLF4J具有巨大的优势,您可以通过它提供的桥来统一使用的所有库的日志记录。 其他任何日志记录框架都不允许这样做。 这使项目可以平稳地迁移到SLF4J,而不必依赖于依赖项所做的日志记录框架选择。

Thomas Lötzer answered 2020-02-13T07:58:13Z

3 votes

Slf4j不是真正的日志记录外观。Slf4j不支持其实现程序的许多功能。简而言之,我在下面提到log4j示例。

Slf4j无法指定用户选择的配置文件,但会强制用户在众多Java根目录之一(每个Jar具有一个根目录加上JVM根目录和类或bin)中使用默认值(log4j.properties或log4j.xml)。 如果有两个JAR文件,则很难控制要安全使用哪个文件。

Slf4j无法支持所有Log4j级别,例如“致命”级别。 当将大型代码从Log4j切换到Slf4j时,需要进行大量的代码更改工作(例如,决定如何重新排列级别)。

必须选择两个关键的Jar文件(log4j-over-slf4j.jar或slf4j-log4j12.jar)。 如果同时使用classpath,将无法正常工作。 如果随机选择一个,则会丢失意外的功能(例如log4j-over-slf4j.jar不支持同一类的多个日志文件;例如,一个用于事件日志,一个用于原始数据日志)。

Steven S Wang answered 2020-02-13T07:58:47Z

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值