slf4j + log4j2 in maven + spring
pom.xml
<!-- log配置:Log4j2 + Slf4j -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.2</version>
</dependency>
<dependency> <!-- 桥接:告诉Slf4j使用Log4j2 -->
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.2</version>
</dependency>
<dependency> <!-- 桥接:告诉commons logging使用Log4j2 -->
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.10</version>
</dependency>
web.xml
使用log4j2的默认文件名和默认路径,故此处没有配置.
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--以下配置文件适用于Log4j2的2.2版本,匹配slf4j的1.7.10版本-->
<!--修改自:http://www.cnblogs.com/yjmyzz/p/3988114.html-->
<!--log4j2默认配置文件的路径和文件名:classpath:log4j2.xml-->
<!--设置log4j2自己的日志显示等级为WARN,每(1800/60)分钟读取一次配置文件-->
<Configuration status="WARN" monitorInterval="1800">
<properties>
<property name="LOG_HOME">logs/tally</property>
<property name="FILE_NAME">tally</property>
</properties>
<!--规则制定部分-->
<Appenders>
<!--输出到控制台-->
<Console name="Console" target="SYSTEM_OUT">
<!--%l:输出的信息含有文档链接(文档名:行号),点击后跳转至相应的文档.-->
<!--[%-5level]:输出日志级别(占用5个位置,不足补空格)-->
<PatternLayout pattern="%d [%-5level] %l - %m%n"/>
</Console>
<!--输出到日志文件,满足一定条件则将旧日志以制定的规则进行打包压缩-->
<!--fileName:输出的日志文件名-->
<!--filePattern:压缩日志路径-->
<RollingRandomAccessFile name="running-log"
fileName="${LOG_HOME}/${FILE_NAME}_${date:yyyy_MM_dd}.log"
filePattern="${LOG_HOME}/$${date:yyyy-MM}/${FILE_NAME}_%d{yyyy.MM.dd}_%i.log.gz">
<!--Filters 用于实现过滤特定类型日志-->
<Filters>
<!--日志文件中输出INFO及以上级别的日志-->
<ThresholdFilter level="INFO"/>
<!--大于等于"ERROR"的拒绝输出-->
<!--<ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/>-->
</Filters>
<PatternLayout pattern="%d [%-5level] (%F:%L) - %msg%n"/>
<Policies>
<!--若log文件的创建时间早于JVM的启动时间,则将原来的log文件封存,然后创建一个新的空白log文件。-->
<!--<OnStartupTriggeringPolicy/>-->
<!--按时间分割-->
<!--每天打包一次旧日志,interval:设置每几天,单位:压缩包文件名的日期最小单位-->
<TimeBasedTriggeringPolicy modulate="true" interval="1"/>
<!--单个日志文件最大容量,超出则自动压缩.-->
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
<!--压缩包最大保存数量,对应压缩包文件名的%i,听说超过设定值,自动删除最早的包,默认值:7.-->
<DefaultRolloverStrategy max="50"/>
</RollingRandomAccessFile>
</Appenders>
<!--规则使用部分-->
<Loggers>
<!--过滤掉spring和hibernate的一些无用的信息-->
<logger name="org.springframework" level="WARN"/>
<!--<logger name="org.hibernate" level="WARN"/>-->
<!--dao层日志专门处理:running-log-->
<!--<Logger name="cn.ok.dao" level="trace"
additivity="true">
<AppenderRef ref="running-log" />
</Logger>-->
<!--全局日志输出配置-->
<Root level="ALL">
<AppenderRef ref="running-log"/>
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>