我已经在this和this上阅读了类似的问题 . 但他们大约四岁了!
此外,我已经阅读了this logback页面,其中有一些非常好的信息,说明为什么选择logback over log4j .
我希望为具有以下技术堆栈的项目实现日志框架 -
-
Spring 天
-
Hibernate
-
Maven
-
Tomcat
-
休息
我已经决定使用slf4j作为外观,所以这个问题是关于是否使用slf4j log4j或slf4j logback(我知道logback本身使用slf4j) .
我正在寻找的是 -
-
有没有人有过Logback的经验,证明它不像log4j那样成熟或高效?
-
与多线程环境中的log4j相比,它是如何公平的?
-
能够使用logback / log4j日志记录替换tomcat-default jul日志记录
-
能够将日志记录配置合并到maven多模块项目的公共文件中
-
Logback声称它比log4j快10倍,是否有人验证过该声明? (作为我研究的一部分,我计划运行一些测试以测量性能,并将发回我的结果)
EDIT :我在许多地方读过(下面的答案之一也说明了这一点),log4j已经死亡/弃用 . 与此相反,log4j刚刚发布了其2.0版本的alpha version . 所以我不买那个论点 .
1 回答
LogBack成功登陆Log4J,它来自制作Log4J的作者 . Log4J目前已被弃用 .
以下是SLF4J / LogBack素数的示例:
Log4J(当前)
以下是执行的任务:
Java在变量条目上调用toString方法以获取String文字表示 . Java初始化堆中的空间以保存String对象 .
Java基于上面的String创建一个新的String,其中包含“新条目为”和“ . ” . Java初始化空间以保存更新的String文字 .
Java将新构造的String对象作为输入参数传递给Log4J . Log4J检查当前日志记录级别是否为DEBUG及以上 . (假设它在logging.xml描述符中设置为INFO)
Log4J不会将字符串文字打印到日志中,因为日志记录级别设置为INFO . (因此,所有关于1-2的工作都被浪费了)
SLF4J / LogBack(新)
以下是执行的任务:
Java传递String对象“新条目为{} . ”并将对象条目作为输入参数传递给SLF4J . SLF4J检查当前日志记录级别是否为DEBUG及以上 . (假设它在logging.xml描述符中设置为INFO)
Log4J不会将字符串文字打印到日志中,因为日志记录级别设置为INFO .
http://www.slf4j.org/faq.html#logging_performance
能否用logback / log4j loggin替换tomcat-default jul日志?