首页 > 代码库 > Log4j2.x的使用(Log4j1.x升级到Log4j2.x)

Log4j2.x的使用(Log4j1.x升级到Log4j2.x)

Log4j2.x相对Log4j1.x来说有了很大的改变,对于一个应用比较广泛的开源软件来说这种改变有些不必要,也不太人性化


准备工作

官方下载页面:http://logging.apache.org/log4j/2.x/download.html 选择Apache Log4j 2 binary 下载,不要选择source文件下载,如果您有兴趣去研究再打包,也未尝不可。(gz和zip只是不同的打包格式,一般linux下面用gz比较多而已,使用winRar软件不管哪种格式都可以搞定)


开始配置

1. 解压后压缩包,选择log4j-api-2.1.jar和log4j-core-2.1.jar导入项目工程


2.参照Log4j2的使用文档,准备一份Log4j的配置文件, 随意命名一下即可,

简单说明

Appenders里面主要配置输出的方式

Loggers主要配置log怎么打

这个log配置,一方面在控制太输出,同时也会打到app.log中,一个文件最大只能6MB,满6MB就开始备份,最多备份10个文件。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="OFF">
	<Properties>
		<Property name="fileName">app.log</Property>
		<Property name="backupFilePattern">logs/backup-%i.log</Property>
	</Properties>
	<Appenders>
		<Console name="Console" target="SYSTEM_OUT">
			<PatternLayout pattern="[%d{ISO8601}] %C{1}(%M:%L): %m%n"/>
		</Console>
		<RollingFile name="RollingFile" fileName="${fileName}" filePattern="${backupFilePattern}">
			<PatternLayout>
				<pattern>[%d{ISO8601}] %C{1}(%M:%L): %m%n</pattern>
			</PatternLayout>
			<Policies>
				<SizeBasedTriggeringPolicy size="6MB"/>
			</Policies>
			<DefaultRolloverStrategy max="10"/>
		</RollingFile>
	</Appenders>
	<Loggers>
		<Logger name="com.rsi.remote.deploy.tool.gui.MainUI" level="trace">
			<AppenderRef ref="RollingFile"/>
		</Logger>
		<Root level="error">
			<AppenderRef ref="Console"/>
		</Root>
	</Loggers>
</Configuration>

3.配置环境变量,指定log配置的位置 -Dlog4j.configurationFile=file:///C:\logtext.xml(路径必须带有协议file:///,不然会报错)


4.使用的时候,使用LogManager,之前的版本采用的Logger,这也是比较纠结的地方,你说你升级版本就升级版本,你还修改调用方式,像之前可以在源码中配置文件路径,现在只能支持环境变量,如果找不到它会默认去Classpath下面去找几种名为log4j2的文件,有yml,xml等,修改调用方式最大的麻烦在于升级log4j1.x到log4j2.x的过程中,如果你之前的代码调用是直接调用,那就惨了,如果你封装过就相对要好一点,所以说,奉劝各位,如果正常设计工程的时候调用开源项目的时候,最好用自己的代码去封装一遍,这样以后再遇到这种调用方式的问题,直接修改一个文件就好了

static LogManagerlogger = LogManager.getLogger(TestLogger.class.getName());


如果有其他问题可以给我留言

Log4j2.x的使用(Log4j1.x升级到Log4j2.x)