主要包括日誌的節點屬性,輸出日誌到控制檯和文件中,以及修改springboot中對logback默認配置
spring boot中 logback日誌框架
1、日誌節點屬性
1、根節點configuration 的屬性:
()
- scan:當此屬性設置爲
true
時,配置文件如果發生改變,將會被重新加載,默認值爲true
。 - scanPeriod:設置監測配置文件是否有修改的時間間隔,如果沒有給出時間單位,默認單位是毫秒。當
scan
爲true
時,此屬性生效。默認的時間間隔爲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