LOG4J日志性能建议

本文已迁移到百家号:http://baijiahao.baidu.com/builder/preview/s?id=1641725354382084423,欢迎移步


实际上影响log4j性能的最主要因素有三:

  • immediateFlush
  • bufferedIO
  • asycAppender

测试的结果可能和你想的不一样。比如,使用asyncAppender会降低本地日志文件的写入性能;bufferedIO不怎么样影响性能除非日志特别多;immediateFlush设为false几乎可以使写入时间减半。

上面三个都是使用缓存,他们分三级。
第一级, immediateFlush=false 会开启 java.io.Writer/java.io.OutputStreamWriter 的缓存,消息到达后会缓存最长1024字节。
第二级 bufferedIO=true 会把 java.io.Writer 包装成 java.io.BufferedWriter ,缓存默认大小是 1024*8 字节。
第三级是 asyncAppender ,会缓存Log4j事件,默认是128条。

一般地,输出流在使用的时候其他写入会被阻塞。使用缓存后可以减少这种阻塞。但是如果本来就没有阻塞(比如在写入本地日志的时候),使用缓存反而会延迟写入。这样讲的话,使用缓存反而没提升性能。所以性能调优要看情况:你使用的是本地日志还是远程日志,什么会造成资源竞争。

本文已迁移到百家号:http://baijiahao.baidu.com/builder/preview/s?id=1641725354382084423,欢迎移步

你可能感兴趣的:(LOG4J日志性能建议)