新项目是否应使用logback而不是log4j作为日志记录框架?
或者换句话说:'logback是否比log4j好(留下SLF4J -'feature'的logback旁边)?'
现在在我的应用程序中,在某些时候我们将一些重要的东西记录到日志文件中.
基本上只针对日志记录,我们正在创建可用数据的JSON,然后登录到日志文件.这是以JSON格式记录数据的业务要求.
现在从可用数据创建JSON然后记录到FILE会花费大量时间并影响原始请求返回时间.现在的想法是改善引用.
我们讨论的一件事是使用创建线程池
Executors.newSingleThreadExecutor()
Run Code Online (Sandbox Code Playgroud)
在我们的代码中,然后将任务提交给它,将数据转换为JSON和后续日志记录.
这是一个很好的方法吗?由于我们正在管理线程池本身,是否会产生一些问题?
如果有人可以分享更好的解决方案,我将不胜 在某种程度上使用Log4j.我试图使用AsyncAppender但没有达到任何预期的结果.我们使用的是EJB 3,Jboss 5.0,Log4j,java6.
此外,我已经阅读了这个回溯页面,其中有一些非常好的信息,说明为什么选择Logback over log4j.
我希望为具有以下技术堆栈的项目实现日志框架 -
我已经决定使用slf4j作为外观,所以这个问题是关于是否使用slf4j + log4j或slf4j + logback(我知道logback本身使用slf4j).
我正在寻找的是 -
编辑:我已经阅读了许多地方(下面的答案之一也说明了这一点)log4j已经死亡/已弃用.与此相反,log4j刚刚发布了其2.0版本的alpha版本.所以我不买那个论点.
我试图将所有不同的日志工具(log4j、slf4j、logback、jcl 等)以及它们都做了什么。
我知道 slf4j 是不同日志工具的外观,可以轻松地在任何日志工具之间切换。但是当我谈到 logback 时,我很困惑。我知道 logback 是 log4j 的继承者,并且从这篇文章中它使用了“本地实现”这个词;这到底是什么意思。根据我的理解,logback 与 slf4j 是一回事......所以它也是一个外观吗?我对 logback 是一个后端日志工具和一张与 slf4j 一样的面孔有不同的描述。
我尝试了一个小型测试项目来了解它是如何工作的。所以在我的 maven pom 中,我放了:
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.3</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
然后在我输入的代码中:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Foo {
/** The Constant LOGGER. */
private static final Logger LOGGER = LoggerFactory.getLogger(Foo.class);
}
Run Code Online (Sandbox Code Playgroud)
那么这个实现是否意味着 slf4j 是 logback 的外观,而 logback 是与 log4j 和 jcl 相同的后端日志记录工具?