从0到1_后端开发

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

2017-12-11  本文已影响22人  ef43ffb32440

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介绍及配置详解

上一篇下一篇

猜你喜欢

热点阅读