java日志框架log4j和logback那个性能好
当前项目使用的是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,但是这两个具体是哪个性能高呢?