码迷,mamicode.com
首页 > 其他好文 > 详细

企业开发-log4j 最新版本2使用简介

时间:2015-11-12 18:26:13      阅读:400      评论:0      收藏:0      [点我收藏+]

标签:

1、官网http://logging.apache.org/log4j/2.x/index.html

2、SLF4J目前已经是业界标准,完整兼容和实现

3、如何兼容版本1?log4j-1.2-api-2.4.1.jar这个包,但是还是有一些接口是变化了,个人看了下都是些不常用的接口变了,如果你用到请修改源代码。参考官方

http://logging.apache.org/log4j/2.x/manual/migration.html

4、多个SLF4J实现不能共存,共存需要解决一些冲突问题

5、log4j-slf4j-impl和log4j-to-slf4j不能共存,从名称就能看出一个是log4j对SLF4J的实现,一个是反过来。一起会报错

6、新特征:支持异步日志更强大。因为公司需要分布式日志,所以是用scala actor写的,当时也有测试使用Disruptor,效率极高,没想到就出来了,哈哈。

7、新的语法

logger.debug("Logging in user %s with birthday %s", user.getName(), user.getBirthdayCalendar());
logger.debug("Logging in user %1$s with birthday %2$tm %2$te,%2$tY", user.getName(), user.getBirthdayCalendar());
logger.debug("Integer.MAX_VALUE = %,d", Integer.MAX_VALUE);

熟悉吧,经典语法

还有一新,不过要jdk8才支持,表达式


if (logger.isTraceEnabled()) {
logger.trace("Some long-running operation returned {}", expensiveOperation());
}
变为
// Java-8 style optimization: no need to explicitly check the log level:
// the lambda expression is not evaluated if the TRACE level is not enabled
logger.trace("Some long-running operation returned {}", () -> expensiveOperation());


别再操劳的了,复制后不需要修改,今天我就他r的改了几是个文件,发现新语法不要那么麻烦,无语了


package org.apache.test;
public class MyTest {//下面那句按照习惯复制后是不是要修改类名,有时还jb忘了?
private static final Logger logger = LogManager.getLogger(MyTest.class.getName());
}
//新语法可以这样
package org.apache.test;
public class MyTest {
private static final Logger logger = LogManager.getLogger();
}


8、配置文件搜索先后顺序:

log4j2-test.yaml或者log4j2-test.yml
-》log4j2-test.json或者log4j2-test.jsn
-》log4j2-test.xml
如果没有带test的文件,那么去掉test,重样来一遍

log4j2.yaml或者log4j2.yml 
-》log4j2.json或者log4j2.jsn
-》log4j2.xml 

这种逻辑导致正式部署的时候必须记得改配置文件名字


企业开发-log4j 最新版本2使用简介

标签:

原文地址:http://my.oschina.net/fir01/blog/529535

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!