前天Log4j2.0出了Release版本了。简单体验了一小下:总的来说,变的较大的,有以下几点:
- 不支持Java6以下的版本了
- 不支持properties文件做为配置了
- 支持插件、过滤器等
- 相比1.x,性能大幅度提升
点进去看详细~
Apache Log4j 2.0
前天Apache Log4j2.0出了Release版本了。简单体验了一小下:总的来说,变的较大的,有以下几点
JAVA 6以上,性能提升
log4j 2.0 内部实现用了很多更新更快的特性,由于1.x兼容非常老版本的JAVA,log4j的核心SLF4J、Logback都是相当老旧的,无法升级导致性能低下。2.0版本更新了这些内核并使用了多核特性,在多线程情况下,2.0比1.X的吞吐率高出10倍以下,延时数量级别也低于1.X几倍
不再支持properties配置文件
log4j 2.0不支持之前的properties配置了,xml还是支持的(说明:配置也有变化,如果升级到2.0,即使是XML配置也需要有所修改),另外新支持json和yml
寻找配置如下:(2,3,4,5)找到第一个就会返回,
- 载入默认配置 “log4j.configurationFile” ,这个是log4j自带的,如果没有配置时,即完全使用默认配置
- 在classpath里面寻找 log4j2-test.json 或 log4j2-test.jsn
- 在classpath里面寻找 log4j2-test.xml
- 在classpath里面寻找 log4j2.json 或 log4j2.jsn
- 在classpath里面寻找 log4j2.xml
- 如果没有找到以上的,则使用DefaultConfiguration(控制台输出日志)
说明 :2.0不兼容1.X版本,升级需谨慎~2.0简化了配置项,即使是XML配置,升到2.0后也要做出一些修改,代码里面也有少量变动。具体可以
其它
- 支持过滤器 : 支持输出过滤器
- 插件化的设计 : 2.0使用插件化的设计结构,如果没有想要的Appender,可以自己扩展
- BUG修复 : 修复了N项BUG
升级1.X到2.0
- 可以使用适配包兼容 log4j-1.x-api-2.0.jar ,不建议,官方也说了,即使你用了这个包,也不能解决全部问题,配置什么的还是要改
- 代码方面,主要是命名空间变了,比如 1.x 里面的 org.apache.log4j 在2.0里面是 org.apache.logging.log4j,类也有变化 比如1.x里面的org.apache.log4j.Logger.getLogger() 在2.0里面是 org.apache.logging.log4j.LogManager.getLogger(). 还有几个代码变化的地方,不算太多,详细参考官方文档。
- 配置文件有改,命名规则上面已经说过了,具体在2.0怎么配置可以参考官方网站,我就不说了,这里面给个传送门,有兴趣的可以去看看。