美文网首页 从0到1_后端开发
日志组件slf4j+logback的配置和使用

日志组件slf4j+logback的配置和使用

作者: ef43ffb32440 | 来源:发表于2017-12-11 11:13 被阅读22次

    1. maven依赖:

            <!-- logback+slf4j -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>1.7.21</version>
                <type>jar</type>
                <scope>compile</scope>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>1.1.3</version>
                <type>jar</type>
            </dependency>
    

    注:logback-core是logback-classic的基础,在importlogback-classic时会自动加载其依赖的logback-core。

    2. 配置和使用

    1. 日志使用

    我们使用org.slf4j.LoggerFactory,就可以直接使用日志了。

    protected final Logger logger = LoggerFactory.getLogger(this.getClass());
    

    使用:

    logger.debug("DEBUG TEST 这个地方输出DEBUG级别的日志");
    logger.info("INFO test 这个地方输出INFO级别的日志");
    logger.error("ERROR test 这个地方输出ERROR级别的日志");
    

    结合slf4j的占位符(place holder),在代码中表示为“{}”的特性:

    logger.debug("Processing trade with id: {} and symbol : {} ", id, symbol);
    
    2. 在控制台输出特定级别的日志

    logback的配置文件都放在/src/main/resource/文件夹下的logback.xml文件中。其中logback.xml文件就是logback的配置文件。只要将这个文件放置好了之后,系统会自动找到这个配置文件。

    下面的配置中,我们输出特定的ERROR级别的日志:

    <?xml version="1.0"?>
    <configuration>
    
        <!-- ch.qos.logback.core.ConsoleAppender 控制台输出 -->
        <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>[%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n</pattern>
            </encoder>
        </appender>
    
        <!-- 日志级别 -->
        <root>
            <level value="error" />
            <appender-ref ref="console" />
        </root>
    
    </configuration> 
    

    结果只在控制台输出ERROR级别的日志。

    3. 设置输出多个级别的日志
    <?xml version="1.0"?>
    <configuration>
    
        <!-- ch.qos.logback.core.ConsoleAppender 控制台输出 -->
        <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>[%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n</pattern>
            </encoder>
        </appender>
    
        <!-- 日志级别 -->
        <root>
            <level value="error" />
            <level value="info" />
            <appender-ref ref="console" />
        </root>
    
    </configuration> 
    

    设置两个level,则可以输出 ERROR和INFO级别的日志了。

    4. 设置文件日志
    
    <?xml version="1.0"?>
    <configuration>
    
        <!-- ch.qos.logback.core.ConsoleAppender 控制台输出 -->
        <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>[%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n
                </pattern>
            </encoder>
        </appender>
    
        <!-- ch.qos.logback.core.rolling.RollingFileAppender 文件日志输出 -->
        <appender name="file"
            class="ch.qos.logback.core.rolling.RollingFileAppender">
            <Encoding>UTF-8</Encoding>
            <File>/home/test.log</File>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <FileNamePattern>/home/test-%d{yyyy-MM-dd}.log
                </FileNamePattern>
                <MaxHistory>10</MaxHistory>
                <TimeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <MaxFileSize>5MB</MaxFileSize>
                </TimeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
            <layout class="ch.qos.logback.classic.PatternLayout">
                <pattern>[%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n
                </pattern>
            </layout>
        </appender>
    
        <!-- 日志级别 -->
        <root>
            <!-- 定义了ERROR和INFO级别的日志,分别在FILE文件和控制台输出 -->
            <level value="error" />
            <level value="info" />
            <appender-ref ref="file" /> 
            <appender-ref ref="console" />
        </root>
    
    
    </configuration> 
    
    5. 精确设置每个包下面的日志
    <logger name="com.xxx" additivity="false">
        <level value="info" />
        <appender-ref ref="file" />
        <appender-ref ref="console" />
    </logger>
    

    参考:
    Java深入 - logback的配置和使用
    日志组件slf4j介绍及配置详解

    相关文章

      网友评论

        本文标题:日志组件slf4j+logback的配置和使用

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