log4j2 设置,使用总结

log4j2 已经出来一段时间了,项目中一直用log4j,log4j2出来后对它有些兴趣,这两天好好地学习了一遍,在这里写一个总结,或许将来会用得到。


1,安装配置

       我采用的是maven安装方法,请先参考J2ee开发环境的建立,然后是查看最新的log4j2的版本是哪个,这个不用去log4j2的官网,可以直接在mavenSearch中查看,输入log4j2,下面显示的最新可用版本是2.4.1,好,在项目中的pom.xml中加入如下代码:

<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-core</artifactId>
			<version>2.4.1</version>
		</dependency>
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-api</artifactId>
			<version>2.4.1</version>
		</dependency>

,保存,在eclipse中就会自动下载文件并添加到项目路径

2,log4j2.xml文件配置

     log4j2文件是日志配置文件,注意有2个功能,一是设置输入格式,二是设置输入目的地,具体配置参数意义可参考log4jApi,appender的设置请参考appender的节点,这个才是log4j2强大的地方。以下是我的配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
	<Appenders>
		<Console name="Console" target="SYSTEM_OUT">
			<PatternLayout pattern="%d [%-5level] %C.%M:%L - %m%n" />
		</Console>
		<!-- <File name="log" fileName="e:\\log.log" append="false">
			<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
		</File>
		<RollingFile name="RollingFile" fileName="e:\logs\app.log" filePattern="e:\logs\$${date:yyyy-MM}\app-%d{MM-dd-yyyy}-%i.log.gz">
			<PatternLayout>
				<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
			</PatternLayout>
			<Policies>
				<TimeBasedTriggeringPolicy interval="1 "/>
				<SizeBasedTriggeringPolicy size="250 MB"/>
			</Policies>
		</RollingFile> -->
	</Appenders>
	<Loggers>
		
		<Root level="trace">
			<AppenderRef ref="Console" />
		</Root>
	</Loggers>
</Configuration>

把这个文件保存到项目中的src/main/resources目录下,命名为log4j2.xml,当然,log4j2有默认配置,没有这个文件也可以使用,但很明显,默认的肯定不够用,也配不来输出到文件的功能。

3.使用

       log4j2要用在java文件上,我个人认为,可以建个根类,在根类中初始化logger,其他类只要集成根类,就不用再次配置了,很方便,根类如下配置:

package maven;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class BaseAction {
	public static final Logger logger=LogManager.getLogger(LogTest.class);
}

根类就是要越简单越好。其他类使用:

package maven;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class LogTest extends BaseAction{
	
	public static void main(String[] args){
		logger.entry();
		//for(int i=0;i<Integer.MAX_VALUE;i++){
		logger.error("Ha Ha");
		//}
		logger.info("I am {} a {} man","happy","good");
		try{
			int t=123/0;
		}catch(Exception e){
			logger.catching(e);
		}
		logger.exit();
	}
}

输出:

2015-10-21 09:16:29,676 [TRACE] maven.LogTest.main:9 - entry
2015-10-21 09:16:29,677 [ERROR] maven.LogTest.main:11 - Ha Ha
2015-10-21 09:16:29,678 [INFO ] maven.LogTest.main:13 - I am happy a good man
2015-10-21 09:16:29,678 [ERROR] maven.LogTest.main:17 - catching
java.lang.ArithmeticException: / by zero
	at maven.LogTest.main(LogTest.java:15) [classes/:?]
2015-10-21 09:16:29,681 [TRACE] maven.LogTest.main:19 - exit

总结:

         以上是log4j2的基本使用方法,其变化和技术要点主要在log4j2.xml中的appender的设置上,通过appender可以设置其日志输出到控制台,文件,远程,数据库。

一个成熟的项目必须有个成熟的日志系统,log4j2很显然可以满足大部分日志要求,为什么用log4j2而不用log4j呢?对我来说,最主要原因是可以用xml配置,而不是让人讨厌的profie文件。


           本文100%原创,你的评论就是对我的最好回报,引用请加上说明和作者。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值