在java工程下使用log4j2很简单,首先需要下载,地址为:logging.apache.org,然后选择log4j 2.x的版本进去下载就可以了。
需要用到的jar包:log4j-core-2.1.jar,log4j-api-2.1.jar
log4j2的使用也和1.x基本上差不多
private static Logger log = LogManager.getLogger(LogTest.class);
日志级别:
trace: 是追踪,就是程序推进以下,你就可以写个trace输出,所以trace应该会特别多,不过没关系,我们可以设置最低日志级别不让他输出。
debug: 调试么,我一般就只用这个作为最低级别,trace压根不用。是在没办法就用eclipse或者idea的debug功能就好了么。
info: 输出一下你感兴趣的或者重要的信息,这个用的最多了。
warn: 有些信息不是错误信息,但是也要给程序员的一些提示,类似于eclipse中代码的验证不是有error 和warn(不算错误但是也请注意,比如以下depressed的方法)。
error: 错误信息。用的也比较多。
fatal: 级别比较高了。重大错误,这种级别你可以直接停止程序了。
日志调用方法:
public static void tests(){
for(int i=0;i<10000;i++){
log.trace("测试级别trace");
log.warn("测试级别:warn");
log.debug("方法测试");
log.error("方法发生错误,test");
}
}
控制台打印的日志信息为:
2014-12-24 14:30:58 CST ERROR org.test1.LogTest 13 tests - 方法发生错误,test
2014-12-24 14:30:58 CST WARN org.test1.LogTest 11 tests - 测试级别:warn
2014-12-24 14:30:58 CST DEBUG org.test1.LogTest 12 tests - 方法测试
2014-12-24 14:30:58 CST ERROR org.test1.LogTest 13 tests - 方法发生错误,test
2014-12-24 14:30:58 CST WARN org.test1.LogTest 11 tests - 测试级别:warn
2014-12-24 14:30:58 CST DEBUG org.test1.LogTest 12 tests - 方法测试
2014-12-24 14:30:58 CST ERROR org.test1.LogTest 13 tests - 方法发生错误,test
2014-12-24 14:30:58 CST WARN org.test1.LogTest 11 tests - 测试级别:warn
2014-12-24 14:30:58 CST DEBUG org.test1.LogTest 12 tests - 方法测试
2014-12-24 14:30:58 CST ERROR org.test1.LogTest 13 tests - 方法发生错误,test
log4j2的配置文件可以使用多种方法,包括xml/json等,这里使用的xml,xml的名称为log4j2.xml,路径位于src下,
<?xml version="1.0" encoding="UTF-8"?>
<!-- status="OFF",可以去掉,它的含义为是否记录log4j2本身的event信息,默认是OFF -->
<configuration status="OFF">
<!-- 定义下面的引用名 -->
<Properties>
<property name="log_pattern">%d{yyyy-MM-dd HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n</property>
<property name="file_name">logs/app.log</property>
<property name="rolling_file_name">logs/app-%d{yyyy-MM-dd}-%i.log.gz</property>
<property name="every_file_size">10M</property><!-- 日志切割的最小单位 -->
<property name="output_log_level">debug</property><!-- 日志输出级别 -->
</Properties>
<!--先定义所有的appender-->
<appenders>
<!--这个输出控制台的配置-->
<Console name="Console" target="SYSTEM_OUT">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
<!--这个都知道是输出日志的格式-->
<PatternLayout pattern="${log_pattern}"/>
</Console>
<!--这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
<!-- 按月生成归档日志,可以使用 filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz" -->
<RollingFile name="RollingFile" fileName="${file_name}"
filePattern="${rolling_file_name}">
<PatternLayout pattern="${log_pattern}"/>
<SizeBasedTriggeringPolicy size="${every_file_size}"/>
</RollingFile>
<!--如果需要配置多个Rollingfile地址,还需要在root下添加appender-ref ref="RollingFile1"/>
<RollingFile name="RollingFile1" fileName="logs/app1.log"
filePattern="logs/app1-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
<SizeBasedTriggeringPolicy size="10MB"/>
</RollingFile>
-->
</appenders>
<!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
<loggers>
<!--建立一个默认的root的logger,需要在root的level中指定输出的级别,-->
<root level="${output_log_level}">
<appender-ref ref="RollingFile"/>
<appender-ref ref="Console"/>
</root>
</loggers>
</configuration>
其中appender的解释,可以参照:http://blog.csdn.net/seven_zhao/article/details/42124073,写的很详细。
范例demo下载地址:http://download.csdn.net/detail/seven_zhao/8294653