java日志框架log4j和logback那个性能好

depositpei 2018-03-01 09:48:35
当前项目使用的是slf4j+log4j1.x版本,目前遇到的问题是日志打印频繁导致效率低下,而且是需要采用同步打印,防止错误记录不全
目前发现当效率低的时候,整系统都在等待log4j的同一把锁 0x000000054021ebf0,如下,系统大概起了200个不同的业务进程,
用jstack查看某一时刻大概有40个线程阻塞在这个地方
项目中所以引用日志的地方如下,都是本地私有的Logger对象,为什么会是一个全局锁?
private static final Logger LOGGER = LoggerFactory.getLogger(xxxxx.class);

java.lang.Thread.State: BLOCKED (on object monitor)
at org.apache.log4j.Category.callAppenders(Category.java:204)
- waiting to lock <0x000000054021ebf0> (a org.apache.log4j.spi.RootLogger)
at org.apache.log4j.Category.forcedLog(Category.java:391)
at org.apache.log4j.Category.log(Category.java:856)
at org.slf4j.impl.Log4jLoggerAdapter.info(Log4jLoggerAdapter.java:368)

在网上了解到java日志框架目前性能好的log4j2.x和logback,但是这两个具体是哪个性能高呢?
...全文
1595 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Enchanter, 2018-03-01
  • 打赏
  • 举报
回复
这一篇文章可以帮到你 http://blog.csdn.net/mr_smile2014/article/details/52401328
Enchanter, 2018-03-01
  • 打赏
  • 举报
回复
还有一点建议就是,在分布式或者是多线程的环境下,要有缓存和队列的的概念,这样多线程的环境,需要有一套专门的日志机制。比如将所有的日志队列化,由专门一个模块去监管。

25,985

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧