Java日志学习-Lgback + SLF4j

概述

用于记录系统中发生的事件。

日志的等级

all < trace < debug < info < warn < error < fatal < off

Lgback + SLF4j

项目中导入依赖

<!-- 导入logback ,IDEA会自动导入 slf4
j和 logback -core  -->

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version> 1.2.3 </version>
</dependency>

//创建一个测试
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class logTest {

    private Logger log = LoggerFactory.getLogger(logTest.class);

    @Test
    public void test1(){

        log.trace("go trace");
        log.debug("go debug");
        log.info("go info");
        log.warn("go warn");
        log.error("go error");

        //slf4j 没有fatl

    }

}

<!--测试结果:logback默认的配置

22:04:09.208 [main] DEBUG com.lq.logTest - go debug
22:04:09.212 [main] INFO com.lq.logTest - go info
22:04:09.212 [main] WARN com.lq.logTest - go warn
22:04:09.212 [main] ERROR com.lq.logTest - go error
-->



//resource下建 logback.xml


<?xml version="1.0" encoding="UTF-8" ?>

<!--scan : true是定期扫描logback.xml配置文件,如有改动,会重新加载
    scanPeriod:设置扫描周期
    debug:true是打印logback内部日志信息
-->
<configuration scan="true" scanPeriod="60 seconds" debug="true">

    <property name="log.path" value="D:/log"/>

    <property name="CONSOLE_LOG_PATTERN"
              value="%d{yyyy-MM-dd HH:mm:ss.SSS} | -{%-5p} in %logger.%M[line-%L] -%m%n"/>

    <!-- 1. 输出到控制台-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <!--输出不低于debug的日志等级,自己设置等级 -->
            <level>debug</level>
        </filter>
        <encoder>
            <!--日志格式 对应11行-->
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!-- 3. 存放在文件中  -->
    <appender name="file" class="ch.qos.logback.core.FileAppender">
        <!--存放路径和名字,具体位置在第九行-->
        <filter>${log.path}/hello2.log</filter>
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <!-- 4。 另一种  -->
    <appender name="file2" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/hello.log</file>
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <!--滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedFileNamingAndTriggeringPolicy">
            <fileNamePattern>${log.path}/hello-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
            class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!--设置存放日志文件的最大内存-->
                <maxFileSize>1kb</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--存放周期,1 则是前一天和今天,自己设置,不设置保存所有 -->
            <maxHistory>1</maxHistory>
        </rollingPolicy>
    </appender>



    <!-- 2. 哪些日志可以输出 level是不低于这个日志等级 。
     如果上面有level:debug。说明日志等级要不低于trace且debug-->
    <root level="trace">
        <!--注册-->
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="file"/>
        <appender-ref ref="file2"/>
    </root>
</configuration>

结果就不写了,想跑一下的自己跑看看

上一篇:println()输出中文正常,logback输出日志就是乱码,


下一篇:java日志打印使用指南