整个升级过程耗时5个小时,中间耗时最长的是找合适的包和升级后日志无法打印以及无法控制日志输出位置,完成后感觉其实很简单,如果一开始就能看到我现在写的笔记,可能几分钟就搞定了。
第一步:首先上log4j2所需要的包
使用版本2.16.0:(以下两个必须同步升级到2.16.0,否则运行会报错)
log4j-core:https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core/2.16.0
log4j-api:https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api/2.16.0
其它相关组件,建议也升级:
log4j-slf4j-impl:https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl/2.16.0
log4j-jul:https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-jul/2.16.0
到这里只要下载完成放到项目中基本上已经完成一半了;
第二步:删除项目中原来的log4j和slf4j-api
第三步:配置简单的log4j2.xml配置文件
- "1.0" encoding="UTF-8" ?>
- <configuration status="warn" monitorInterval="5">
-
-
- <Appenders>
-
- <Console name="Console" target="SYSTEM_OUT">
- <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] [%-5level] %c{36}:%L --- %m%n"/>
- Console>
-
-
- <File name="file" fileName="D:/LOGS/myfile.log">
- <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %l %c{36} - %m%n"/>
- File>
-
-
- <RandomAccessFile name="accessFile" fileName="D:/LOGS/myAcclog.log">
- <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %l %c{36} - %m%n"/>
- RandomAccessFile>
-
-
- <RollingFile name="rollingFile" fileName="D:/LOGS/myrollog.log"
- filePattern="D:/LOGS/$${date:yyyy-MM-dd}/myrollog-%d{yyyy-MM-dd-HH-mm}-%i.log">
- <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
- <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %l %c{36} - %msg%n"/>
- <Policies>
- <OnStartupTriggeringPolicy/>
- <SizeBasedTriggeringPolicy size="10 MB"/>
- <TimeBasedTriggeringPolicy/>
- Policies>
- <DefaultRolloverStrategy max="30"/>
- RollingFile>
-
- Appenders>
-
- <Loggers>
-
- <Root level="trace">
- <AppenderRef ref="Console"/>
- <AppenderRef ref="file"/>
- <AppenderRef ref="accessFile"/>
- <AppenderRef ref="rollingFile"/>
- Root>
- Loggers>
- configuration>
第五步:在web.xml中添加配置
- <context-param>
- <param-name>log4jConfigurationparam-name>
- <param-value>classpath:log4j2.xmlparam-value>
- context-param>
到这里大功告成,等项目编译完成重启即可。