0
点赞
收藏
分享

微信扫一扫

log4j2 slf4j 日志配置

小编 2022-03-30 阅读 160
javamaven

maven配置依赖

<!-- Log4j2 门面API-->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.14.1</version>
</dependency>
<!-- Log4j2 日志实现 -->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.14.1</version>
</dependency>
<!--使用slf4j作为日志的门面,使用log4j2来记录日志 -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.30</version>
</dependency>
<!--为slf4j绑定日志实现 log4j2的适配器 -->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.12.1</version>
</dependency>
<!--异步日志依赖-->
<dependency>
    <groupId>com.lmax</groupId>
    <artifactId>disruptor</artifactId>
    <version>3.4.4</version>
</dependency>

log4j2默认加载classpath下的 log4j2.xml 文件中的配置。事实上log4j2可以通过 XML、JSON、YAML 或properties格式进行配置:

Log4j – Configuring Log4j 2

Log4j 将提供默认配置。DefaultConfiguration 类中提供的默认配置将设置:

  • %d{HH:mm:ss.SSS} ,表示输出到毫秒的时间

  • %t,输出当前线程名称

  • %-5level,输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0

  • %logger,输出logger名称,因为Root Logger没有名称,所以没有输出

  • %msg,日志文本

  • %n,换行

其他常用的占位符有:

  • %F,输出所在的类文件名,如Client.java

  • %L,输出行号

  • %M,输出所在方法名

  • %l,输出语句所在的行数, 包括类名、方法名、文件名、行数

<?xml version="1.0" encoding="UTF-8"?>
<!--monitorInterval 默认多长时间自动获取配置-->
<Configuration status="warn" monitorInterval="5">
    <properties>
        <property name="LOG_HOME">D:/java/logs</property>
        <property name="FILE_NAME">${date:yyyy-MM-dd}</property>
    </properties>
    <Appenders>
        <!--在控制台中显示-->
        <Console name="Console" target="SYSTEM_OUT">
            <!--显示的格式-->
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] [%-5level] %c{36}:%L --- %m%n"/>
        </Console>
        <!--在文件中储存 循环储存一天一个  fileName 文件名字.filePattern 文件名重复后生成的名字-->
        <RollingRandomAccessFile name="MyFile" fileName="${LOG_HOME}/${FILE_NAME}.log"
                     filePattern="${LOG_HOME}/${date:yyyy-MM}/${FILE_NAME}-%d{yyyy-MM-dd HH-mm}-%i.log">
            <!--显示的格式-->
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
            <Policies>
                <!--多长时间生成一个新的LOG(按分钟)-->
                <TimeBasedTriggeringPolicy interval="120"/>
                <!--文件大小超过多少生成新文件-->
                <SizeBasedTriggeringPolicy size="10 MB"/>
            </Policies>
            <!--默认储存多少个文件-->
            <DefaultRolloverStrategy max="20"/>
        </RollingRandomAccessFile>
    </Appenders>
    <Loggers>
        <!--异步日志 additivity防止重复日志-->
        <AsyncLogger name="com.czh" level="trace" additivity="false">
            <AppenderRef ref="MyFile"/>
            <AppenderRef ref="Console"/>
        </AsyncLogger>
        <!--全局日志 level日志级别-->
        <Root level="error">
            <AppenderRef ref="MyFile"/>
            <AppenderRef ref="Console"/>
        </Root>
        <!--局部日志-->
        <Logger name="mylog" level="trace" additivity="false">
			<AppenderRef ref="MyFile" />
		</Logger>
    </Loggers>
</Configuration>

 

举报

相关推荐

0 条评论