springboot中logback日誌框架使用

主要包括日誌的節點屬性,輸出日誌到控制檯和文件中,以及修改springboot中對logback默認配置

spring boot中 logback日誌框架

1、日誌節點屬性

1、根節點configuration 的屬性:

()

  • scan:當此屬性設置爲true時,配置文件如果發生改變,將會被重新加載,默認值爲true
  • scanPeriod:設置監測配置文件是否有修改的時間間隔,如果沒有給出時間單位,默認單位是毫秒。當scantrue時,此屬性生效。默認的時間間隔爲1分鐘。
  • debug:當此屬性設置爲true時,將打印出logback內部日誌信息,實時查看logback運行狀態。默認值爲false

2、根節點的子節點 root

root節點是必選節點,用來指定最基礎的日誌輸出級別,只有一個level屬性。

level:用來設置打印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能設置爲INHERITED或者同義詞NULL。默認是DEBUG。
可以包含零個或多個元素,標識這個appender將會添加到這個loger。

    <!--指定最基礎的日誌輸出級別-->
    <root level="INFO">
        <!--appender將會添加到這個loger-->
        <appender-ref ref="consoleLog1"/>
        <appender-ref ref="consoleLog2"/>
    </root>

3、根節點的子節點 contextName:設置上下文名稱

每個logger都關聯到logger上下文,默認上下文名稱爲“default”。但可以使用設置成其他名字,用於區分不同應用程序的記錄。一旦設置,不能修改,可以通過%contextName來打印日誌上下文名稱,一般來說我們不用這個屬性,可有可無。

logbackdemo

4、根節點的子節點property:設置上下文名稱

用來定義變量值的標籤, 有兩個屬性,name和value;其中name的值是變量的名稱,value的值是變量定義的值。通過定義的值會被插入到logger上下文中。定義變量後,可以使“${}”來使用變量。

5、根節點的子節點appender

appender用來格式化日誌輸出節點,有倆個屬性name和class,class用來指定哪種輸出策略,常用就是控制檯輸出策略和文件輸出策略。

2、控制檯輸出

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">

    <contextName>logbackdemo</contextName>

    <!--輸出到控制檯 ConsoleAppender-->
    <appender name="consoleLog1" class="ch.qos.logback.core.ConsoleAppender">
        <!--展示格式 layout-->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%d -1 %msg%n</pattern>
        </layout>
    </appender>

    <!--輸出到控制檯 ConsoleAppender-->
    <appender name="consoleLog2" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d -2 %msg%n</pattern>
        </encoder>
    </appender>

    <!--指定最基礎的日誌輸出級別-->
    <root level="INFO">
        <!--appender將會添加到這個loger-->
        <appender-ref ref="consoleLog1"/>
        <appender-ref ref="consoleLog2"/>
    </root>

</configuration>

其中<encoder>表示對日誌進行編碼:

  • %d{HH: mm:ss.SSS}——日誌輸出時間
  • %thread——輸出日誌的進程名字,這在Web應用以及異步任務處理中很有用
  • %-5level——日誌級別,並且使用5個字符靠左對齊
  • %logger{36}——日誌輸出者的名字
  • %msg——日誌消息
  • %n——平臺的換行符
  • ThresholdFilter爲系統定義的攔截器,例如:我們用ThresholdFilter來過濾掉ERROR級別以下的日誌不輸出到文件中,可以保證文件裏只有Error級別日誌。

輸出到文件中

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">

    <contextName>logbackdemo</contextName>

    <property name="logback.logdir" value="C:\\FSSP"/>

    <appender name="fileLog" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <!--滾動策略,按照時間滾動 TimeBasedRollingPolicy-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--文件路徑,定義了日誌的切分方式——把每一天的日誌歸檔到一個文件中,以防止日誌填滿整個磁盤空間-->
            <FileNamePattern>${logback.logdir}/%d{yyyy-MM}/Log%d{yyyyMMdd}.txt</FileNamePattern>

        </rollingPolicy>
        <!--日誌輸出編碼格式化-->
        <encoder>
            <charset>UTF-8</charset>
            <pattern>%d [%thread] %-5level %logger{36} %line - %msg%n</pattern>
        </encoder>
    </appender>
    <!--指定最基礎的日誌輸出級別-->
    <root level="DEBUG">
        <!--appender將會添加到這個loger-->
        <appender-ref ref="fileLog"/>

    </root>
</configuration>

測試用例

@SpringBootApplication
public class SpringBootLoggingDemoApplication {
    private static Logger logger = LoggerFactory.getLogger(SpringBootLoggingDemoApplication.class);

    public static void main(String[] args) {
        SpringApplication.run(SpringBootLoggingDemoApplication.class, args);
        logger.error("測試{},日誌級別{},輸出{}", "demo", "error", "error level log");
        logger.info("測試{},日誌級別{},輸出{}", "demo", "info", "info level log");
        logger.debug("測試{},日誌級別{},輸出{}", "demo", "debug", "debug level log");
        logger.warn("測試{},日誌級別{},輸出{}", "demo", "warn", "warn level log");
    }

}

最後的效果:

3、修改默認配置

在spring boot中logback默認訪問根目錄下的logback.xml要是想進行修改的話就在配置文件中設置

logging.config=classpath:fps.xml

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章