slf4j+log4j2的配置
Posted new-life
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了slf4j+log4j2的配置相关的知识,希望对你有一定的参考价值。
昨天自己测试了一下slf4j+log4j2的配置,可以正常使用,虽然配置十分简单,但好记性不如烂笔头,想想还是记录下来吧。
运行的环境:jdk1.7、tomcat7、Maven的web项目
1.在新建的maven项目的pom文件中添加jar包依赖(依赖代码在步骤末尾):
需要添加依赖的jar包有:
slf4j的api接口包:slf4j-api
log4j2的核心包:log4j-core
log4j2的api接口包:log4j-api
slf4j对应log4j2日志框架的驱动包:log4j-slf4j-impl
log4j2的异步日志功能包:com.lmax.disruptor
解决web项目log4j可能出现警告的jar包:log4j-web
2.配置log4j2.xml日志配置文件(日志配置文件内容放在步骤末尾):
·日志配置文件默认读取路径为src/main/resource
·若文件放置在默认读取路径下则无需配置读取路径
·若文件放置到其他路径下则需要在web.xml中设置日志配置文件的读取路径,代码如下:
<context-param> <param-name>log4jConfiguration</param-name> <param-value>classpath:log4j2.xml</param-value> </context-param>
3.在代码中使用日志功能:
1 import org.slf4j.Logger; 2 import org.slf4j.LoggerFactory; 3 4 public class logTest { 5 6 // 通过slf4j接口创建Logger对象 7 private static final Logger logger = LoggerFactory.getLogger(logTest.class); 8 9 public static void main(String[] args) { 10 logger.info("this is info"); 11 logger.error("this is error"); 12 } 13 }
运行效果:
关于日志配置文件的详细说明请参考log4j2配置文件log4j2.xml详解,以下是pom.xml需要加入的jar包依赖以及日志配置文件log4j2.xml内容示例:
pom.xml需要加入的jar包依赖:
<properties> <!-- jar包版本设置 --> <slf4j.version>1.7.21</slf4j.version> <log4j.version>2.11.0</log4j.version> </properties> <dependencies> <!-- 导入slf4j的接口包以及对应日志框架的驱动包 --> <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <!--用于slf4j与log4j2保持桥接 --> <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <scope>runtime</scope> <version>${log4j.version}</version> </dependency> <!-- 导入日志框架核心包与接口包 --> <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <scope>runtime</scope> <version>${log4j.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>${log4j.version}</version> </dependency> <!--用于解决web环境下关闭服务器时可能出现的log4j线程无法及时关闭的warn,web工程需要包含log4j-web,非web工程不需要 --> <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-web --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-web</artifactId> <scope>runtime</scope> <version>${log4j.version}</version> </dependency> <!--使用log4j2的AsyncLogger时需要包含disruptor --> <!-- https://mvnrepository.com/artifact/com.lmax/disruptor --> <dependency> <groupId>com.lmax</groupId> <artifactId>disruptor</artifactId> <scope>runtime</scope> <version>3.4.2</version> </dependency> </dependencies>
日志配置文件内容示例:
1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <!-- 4 日志说明: 5 6 (1)请根据实际情况配置各项参数 7 8 (2)需要注意日志文件备份数和日志文件大小,注意预留目录空间 9 10 (3)实际部署的时候backupFilePatch变量需要修改成linux目录 11 12 --> 13 14 <configuration status="error"> 15 16 <Properties> 17 18 <Property name="fileName">front.log</Property> 19 20 <Property name="backupFilePatch">d:/usr/front/log/</Property> 21 22 </Properties> 23 24 <!--先定义所有的appender--> 25 26 <appenders> 27 28 <!--这个输出控制台的配置--> 29 30 <Console name="Console" target="SYSTEM_OUT"> 31 32 <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--> 33 34 <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" /> 35 36 <!--这个都知道是输出日志的格式--> 37 38 <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" /> 39 40 </Console> 41 42 43 44 <!--这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档--> 45 46 <RollingFile name="RollingFile" fileName="${backupFilePatch}/${fileName}" 47 48 filePattern="${backupFilePatch}$${date:yyyy-MM}/app-%d{yyyyMMddHHmmssSSS}.log.gz"> 49 50 <PatternLayout 51 52 pattern="%d{yyyy-MM-dd HH:mm:ss.SSS z} %-5level %class{36} %L %M - %msg%xEx%n" /> 53 54 55 56 <!-- 日志文件大小 --> 57 58 <SizeBasedTriggeringPolicy size="20MB" /> 59 60 <!-- 最多保留文件数 --> 61 62 <DefaultRolloverStrategy max="20"/> 63 64 </RollingFile> 65 66 </appenders> 67 68 69 70 <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效--> 71 72 <loggers> 73 74 <!--建立一个logger,此logger监听name对应的包名下的日志输出,level表示日志级别--> 75 76 <Logger name="com.testlog" level="trace" 77 78 additivity="true"> 79 80 <AppenderRef ref="RollingFile" /> 81 82 </Logger> 83 84 <!--建立一个默认的root的logger--> 85 86 <Root level="error"> 87 88 <!-- 在root中关联appender才会在对应的位置输出日志,定义一个输出到文件的appender也必须关联到此处才会保存日志到文件 --> 89 90 <AppenderRef ref="Console" /> 91 92 </Root> 93 94 </loggers> 95 96 </configuration>
以上是关于slf4j+log4j2的配置的主要内容,如果未能解决你的问题,请参考以下文章
log4j2配置文件详解(springboot+slf4j+log4j2+yaml+lombok)