美文网首页Log日志
最流行的JAVA日志框架:SLF4J + Log4j 2

最流行的JAVA日志框架:SLF4J + Log4j 2

作者: CodeNeverStops | 来源:发表于2018-12-10 16:54 被阅读0次

    其他文章

    SLF4J是什么

    SLF4J(Simple Logging Facade for Java) 是一个日志框架,底层整合了众多日志框架(java.util.logging, logback, log4j等),可以方便的切换底层的日志框架,而不用修改代码。

    Log4j推出了2.x新版本,API接口不兼容1.x版本,如果是1.x的版本的话,整合起来更方便,直接添加依赖slf4j-log4j12

    SLF4J整合Log4j 2的步骤

    1. pom.xml中添加SLF4J和Log4j 2的相关依赖
            <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>1.7.25</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-core</artifactId>
                <version>2.11.1</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl -->
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-slf4j-impl</artifactId>
                <version>2.11.1</version>
            </dependency>
    
    1. 配置Log4j 2
      resources目录下创建log4j2.xml文件
    <?xml version="1.0" encoding="UTF-8" ?>
    <configuration status="info">
        <!-- 自定义属性,以供后面的配置项引用 -->
        <Properties>
            <Property name="fileName">hello.log</Property>
            <Property name="backupFilePath">/tmp/logs/</Property>
            <Property name="logFormat">%d{yyyy-MM-dd HH:mm:ss.SSS} %t [%-5p] %c (%F:%L) %msg%n</Property>
        </Properties>
    
        <!-- 定义appenders -->
        <appenders>
            <!-- 输出到控制台 -->
            <Console name="ConsoleTest" target="SYSTEM_OUT">
                <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
                <PatternLayout pattern="${logFormat}"/>
            </Console>
    
            <!-- 日志存档,按照指定的文件名格式切割日志文件 -->
            <RollingFile name="RollingFileTest" fileName="${backupFilePath}${fileName}"
                         filePattern="${backupFilePath}${date:yyyyMM}/app-%d{yyyyMMddHHmmssSSS}.log.gz">
                <PatternLayout pattern="${logFormat}"/>
                <!-- 日志文件达到1KB,即切割日志文件 -->
                <SizeBasedTriggeringPolicy size="1KB"/>
                <DefaultRolloverStrategy max="20"/>
            </RollingFile>
        </appenders>
    
        <!-- 定义logger -->
        <loggers>
            <Root level="info">
                <!-- 关联上面定义的appenders -->
                <AppenderRef ref="ConsoleTest"/>
                <AppenderRef ref="RollingFileTest"/>
            </Root>
        </loggers>
    
    </configuration>
    
    1. 代码调用
    package com.example.slf4j;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    public class HelloWorld {
    
        public static void main(String[] args) {
            Logger logger = LoggerFactory.getLogger(HelloWorld.class);
            logger.info("Hello World");
    
            logger.debug("Debug Hello World");
            logger.error("Error Hello World");
            logger.warn("Warn Hello World");
        }
    
    }
    
    
    1. 运行结果
      多运行几次,以便让日志文件超过指定的1KB大小,从而切割日志
    .
    ├── 201812
    │   ├── app-20181210165049975.log.gz
    │   └── app-20181210165122691.log.gz
    └── hello.log
    

    相关文章

      网友评论

        本文标题:最流行的JAVA日志框架:SLF4J + Log4j 2

        本文链接:https://www.haomeiwen.com/subject/qabrhqtx.html