简介
使用 Log4j2 作为 SLF4J 实现。
使用
pom.xml:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.32</version>
</dependency>
<!-- 使用 log4j-slf4j-impl 将消息路由到 Log4j2
请注意,如果我们使用的是 SLF4J 1.8 而不是 1.7,则需要使用 log4j-slf4j18-impl 而不是 log4j-slf4j-impl。
-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.17.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.17.0</version>
</dependency>
</dependencies>
log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!-- status: 应记录到控制台的内部 Log4j 事件的级别。-->
<Configuration status="WARN">
<Properties>
<Property name="filename-info">target/info.log</Property>
<Property name="filename-warn">target/warn.log</Property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{50} - %msg%n"/>
</Console>
<!-- fileName:要写入的文件的名称
filePattern: 存档日志文件的名称模式
-->
<RollingFile name="Rolling-info" fileName="${filename-info}" filePattern="logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log.gz">
<!-- 仅在级别匹配时才允许追加器写入事件-->
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{50} - %msg%n"/>
<!-- 日志大小达到 20 兆字节时, 后缀为 KB、MB、GB 或 TB,文件模式必须包含 %i, 否则目标文件将在每次滚动时被覆盖-->
<SizeBasedTriggeringPolicy size="20 MB" />
<!-- 当前日期不再与日志的开始日期匹配时, 这里是每天滚动一次 -->
<!-- interval: 默认为1 , 根据日期模式中最具体的时间单位-->
<TimeBasedTriggeringPolicy />
<!-- 允许用户比使用 DefaultRolloverStrategy max 属性时更灵活地控制在滚动时删除哪些文件,
在删除它们之前最多保留 20 个文件-->
<DefaultRolloverStrategy max="20"/>
</RollingFile>
<RollingFile name="Rolling-warn" fileName="${filename-warn}" filePattern="logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log.gz">
<!-- 仅在级别匹配时才允许追加器写入事件-->
<ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{50} - %msg%n"/>
<!-- 日志大小达到 20 兆字节时, 后缀为 KB、MB、GB 或 TB,文件模式必须包含 %i, 否则目标文件将在每次滚动时被覆盖-->
<SizeBasedTriggeringPolicy size="20 MB" />
<!-- 当前日期不再与日志的开始日期匹配时, 这里是每天滚动一次 -->
<!-- interval: 默认为1 , 根据日期模式中最具体的时间单位-->
<TimeBasedTriggeringPolicy />
<!-- 允许用户比使用 DefaultRolloverStrategy max 属性时更灵活地控制在滚动时删除哪些文件,
在删除它们之前最多保留 20 个文件-->
<DefaultRolloverStrategy max="20"/>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="org.example" level="debug"/>
<Root level="info">
<AppenderRef ref="Console"/>
<AppenderRef ref="Rolling-info" />
<AppenderRef ref="Rolling-warn" />
</Root>
</Loggers>
</Configuration>
测试代码:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Hello world!
*
*/
public class App
{
private static final Logger logger = LoggerFactory.getLogger(App.class);
public static void main( String[] args ){
logger.debug( "Hello World!111" );
logger.info( "Hello World!111" );
logger.warn( "Hello World!111" );
logger.error( "Hello World!111" );
}
}
小程序推广(拾光待办)
微信搜索:拾光待办
或者扫描二维码: