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());

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

时间: 2024-11-08 17:31:19

Log4j2.x的使用(Log4j1.x升级到Log4j2.x)的相关文章

log4j升级为log4j2(无需改动代码)

操作: 1.删掉项目中存在的Log4j1.x的jar包,添加log4j2的jar包; 2.添加log4j和log4j2的连接包log4j-1.2-api-2.x.x.jar,注意不是log4j-api-2.x.x.jar; 3.添加log4j2的配置文件log4j2.xml即可,log4j升级log4j2升级成功. 扩展:如果原项目中用的是slf4j打印日志,那么导包的时候需要导入: slf4j-api-1.x.x.jar slf4j-log4j12-1.x.x.jar 原文地址:http://

Log4J1升级Log4J2

近期,碰到需要将项目中的Log4J1升级到Log4J2,现进行下总结.交代下技术背景:web项目,基于Java + Maven 1. 依赖 <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.3</version> <scope>compile</sco

log4j升级log4j2

1.单独使用log4j 如果在我们系统中单独使用log4j的话,我们只需要引入log4j的核心包就可以了,我这里用的是:log4j-1.2.17.jar, <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> 在src/main/resources添

slf4j、jcl、jul、log4j1、log4j2、logback大总结

1 系列目录 jdk-logging.log4j.logback日志介绍及原理 commons-logging与jdk-logging.log4j1.log4j2.logback的集成原理 slf4j与jdk-logging.log4j1.log4j2.logback的集成原理 slf4j.jcl.jul.log4j1.log4j2.logback大总结 2各种jar包总结 log4j1: log4j:log4j1的全部内容 log4j2: log4j-api:log4j2定义的API log4

log4j笔记:升级2.X版本的日志滚动问题

因为slf4j依赖的log4j在流量大的时候总遇到多线程引起的死锁问题,升级到log4j2.x版本.原来的log4j.properties配置文件已经不被log4j2支持了,需要改写为log4j2.xml.在升级的过程中,配置与原先相同,使用异步日志,按小时滚动,却发现配置后日志输出正常,但滚动的功能不正常,查出以下两个问题. 1. 日志不按小时滚动 原来的配置如下: <RollingRandomAccessFile name="RollingFile" fileName=&qu

Slf4j与log4j及log4j2、logbak的关系及使用方法

Slf4j与log4j及log4j2的关系及使用方法 slf4j slf4j仅仅是一个为Java程序提供日志输出的统一接口,并不是一个具体的日志实现方案,就比如JDBC一样,只是一种规则而已,所以单独的slf4j是不能工作的,必须搭配其他具体的日志实现方案,比如log4j或者log4j2,要在系统中使用slf4j,我们需要引入的核心包为:slf4j-api-1.6.4.jar. 如果不想每次都写private  final Logger logger = LoggerFactory.getLog

log4j+slf4j迁移到log4j2+slf4j (Servlet3.0)

最近对系统中的旧项目实现log升级,选择了log4j2来代替log4j,作为最新一代的log实现,log4j2好在那里可以直接看log4j2性能章节. 这里写写如何从log4j升级到log4j2. 1. maven依赖的变化,对log4j的依赖变成了对log4j2的依赖,在实际使用过程中发现过旧的jboss logging会有问题,使用了3.3.0.Final支持log4j2的版本. <dependency> <groupId>org.apache.logging.log4j<

使用Slf4j集成Log4j2构建项目日志系统的完美解决方案

一.背景 最近因为公司项目性能需要,我们考虑把以前基于的log4j的日志系统重构成基于Slf4j和log4j2的日志系统,因为,使用slf4j可以很好的保证我们的日志系统具有良好的兼容性,兼容当前常见几种日志系统,而使用log4j2而不是log4j是因为Log4j 1.x 在高并发情况下出现死锁导致cpu使用率异常飙升,而Log4j2.0基于LMAX Disruptor的异步日志在多线程环境下性能会远远优于Log4j 1.x和logback(官方数据是10倍以上). 关于slf4j的原理以及优点

log4j2的简单学习

log4j2的简单学习: package com.book.web.controller; import org.slf4j.Logger; import org.slf4j.LoggerFactory; //import org.apache.commons.logging.Log; //import org.apache.commons.logging.LogFactory; //import org.apache.logging.log4j.LogManager; //import org