日誌級別從低到高分爲:java
TRACE < DEBUG < INFO < WARN < ERROR < FATAL。
若是設置爲 INFO ,則低於 INFO 的信息都不會輸出其餘的依次類推spring
默認狀況下,Spring Boot會用Logback來記錄內部日誌,並用INFO級別輸出到控制檯你不用作任何設置tomcat
從上圖能夠看到,日誌輸出內容元素具體以下:springboot
時間日期:精確到毫秒app
日誌級別:異步
進程IDmaven
分隔符:--- 標識實際日誌的開始測試
線程名:方括號括起來(可能會截斷控制檯輸出)編碼
Logger名:一般使用源代碼的類名spa
日誌內容
之後開發的時候,日誌記錄方法的調用,不該該來直接調用日誌的實現類,而是調用日誌抽象層裏面的方法
這和咱們單獨使用日誌jar包有所不一樣
package com.fashvn.ctmsdata.logtest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class LogTest { private static final Logger logger=LoggerFactory.getLogger(LogTest.class); public static void main(String[] args) { logger.error("簡單的日誌記錄測試:{}+{}={}",1,2,3); } }
上面那種方式每次都要重複添加記錄器那一行代碼這裏能夠基於註解方式可是須要使用lombok前提你IDEA配置了lombok插件而後maven添加了lombok依賴才能夠
package com.fashvn.ctmsdata.logtest; import lombok.extern.slf4j.Slf4j; @Slf4j public class LogTest { public static void main(String[] args) { log.error("簡單的日誌記錄測試:{}+{}={}", 1, 2, 3); } }
如今你就能夠愉快的在本身程序了使用日誌了
您還能夠經過啓動您的應用程序 --debug 標誌來啓用「調試」模式(開發的時候推薦開啓),如下兩種方式皆可:
$ java -jar springTest.jar --debug
如何你的日誌記錄需求簡單你能夠經過springboot提供的屬性進行日誌的簡單配置複雜日誌記錄功能須要單獨定義配置文件
logging: # 將日誌輸出到文件 注意name和path同時使用只會生效後一個配置 file: # 日誌名稱能夠是相對路徑和絕對路徑 name: #日誌路徑 能夠是相對路徑和絕對路徑,幫咱們自動生成spring.log的日誌文件 path: # 日誌文件大小默認是10M單位是KB max-size: # 天天切割打包日誌的數量默認是7 max-history: #日誌格式 pattern: #輸出到日誌文件日誌格式 file: #輸出到控制檯日誌格式 # %clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx} console: #時間格式 默認 yyyy-MM-dd HH:mm:ss.SSS dateformat: #日誌等級對齊方式 默認%5p日誌級別輸出右對齊 level: #切割文件名稱 默認是${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz 如過單個日誌文件超過定義的大小就切割打包 rolling-file-name: #須要記錄日誌的等級 level: # 根目錄因此class日誌記錄等級 root: debug # 自定義對應包下class 日誌等級 com.fashvn.ctmsdata: debug
根據不一樣的日誌系統,你能夠按以下規則組織配置文件名,就能被正確加載:
Logback:logback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy
Log4j:log4j-spring.properties, log4j-spring.xml, log4j.properties, log4j.xml
Log4j2:log4j2-spring.xml, log4j2.xml
JDK (Java Util Logging):logging.properties
Spring Boot官方推薦優先使用帶有-spring的文件名做爲你的日誌配置(如使用logback-spring.xml,而不是logback.xml),命名爲logback-spring.xml的日誌配置文件,spring boot能夠爲它添加一些spring boot特有的配置項
若是你即想徹底掌控日誌配置,但又不想用logback.xml做爲Logback配置的名字,application.yml能夠經過logging.config屬性指定自定義的名字
logging.config=classpath:logging-config.xml
雖然通常並不須要改變配置文件的名字,可是若是你想針對不一樣運行時Profile使用不一樣的日誌配置,這個功能會頗有用。
通常不須要這個屬性,而是直接在logback-spring.xml中使用springProfile配置,不須要logging.config指定不一樣環境使用不一樣配置文件
<?xml version="1.0" encoding="UTF-8"?> <!-- scan true:配置文件若是發生改變,將會被從新加載,默認值爲true scanPeriod:設置監測配置文件是否有修改的時間間隔,若是沒有給出時間單位,默認單位是毫秒。默認的時間間隔爲1分鐘,當scan爲true時,此屬性生效。 debug:當此屬性設置爲true時,將打印出logback內部日誌信息,實時查看logback運行狀態。默認值爲false --> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <!--設置上下文名稱 每一個logger都關聯到logger上下文,默認上下文名稱爲「default」。 但可使用設置成其餘名字,用於區分不一樣應用程序的記錄。一旦設置,不能修改, 能夠經過%contextName來打印日誌上下文名稱,通常來講咱們不用這個屬性,無關緊要。 --> <contextName>logback-demo</contextName> <!--設置變量 用來定義變量值的標籤, 有兩個屬性,name和value; 其中name的值是變量的名稱,value的值時變量定義的值。 經過定義的值會被插入到logger上下文中。定義變量後,可使「${}」來使用變量。 --> <property name="logback.logdir" value="/Users/inke/dev/log/tomcat"/> <property name="logback.appname" value="app"/> <!--appender用來格式化日誌輸出節點 有倆個屬性name和class class用來指定哪一種輸出策略 經常使用就是控制檯輸出策略和文件輸出策略。 --> <!--輸出到控制檯 ConsoleAppender 能夠看到layout和encoder,均可以將事件轉換爲格式化後的日誌記錄,可是控制檯輸出使用layout,文件輸出使用encoder,具體緣由能夠看 https://blog.csdn.net/cw_hello1/article/details/51969554 --> <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> <!--輸出到控制檯 ConsoleAppender %d{HH: mm:ss.SSS}——日誌輸出時間 %thread——輸出日誌的進程名字,這在Web應用以及異步任務處理中頗有用 %-5level——日誌級別,而且使用5個字符靠左對齊 %logger{36}——日誌輸出者的名字 %msg——日誌消息 %n——平臺的換行符 ThresholdFilter爲系統定義的攔截器, 例如咱們用ThresholdFilter來過濾掉ERROR級別如下的日誌不輸出到文件中。若是不用記得註釋掉,否則你控制檯會發現沒日誌~ --> <appender name="consoleLog3" class="ch.qos.logback.core.ConsoleAppender"> <!--展現格式 layout--> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern> <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern> </pattern> </layout> <!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ERROR</level> </filter> --> </appender> <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--若是隻是想要 Info 級別的日誌,只是過濾 info 仍是會輸出 Error 日誌,由於 Error 的級別高, 因此咱們使用下面的策略,能夠避免輸出 Error 的日誌--> <!--只是不想要error其餘都要--> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <!--過濾 Error--> <level>ERROR</level> <!--匹配到就禁止--> <onMatch>DENY</onMatch> <!--沒有匹配到就容許--> <onMismatch>ACCEPT</onMismatch> </filter> <!--日誌名稱,若是沒有File 屬性,那麼只會使用FileNamePattern的文件路徑規則 若是同時有<File>和<FileNamePattern>,那麼當天日誌是<File>,明天會自動把今天 的日誌更名爲今天的日期。即,<File> 的日誌都是當天的。 --> <File>${logback.logdir}/info.${logback.appname}.log</File> <!--滾動策略,按照時間滾動 TimeBasedRollingPolicy--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--文件路徑,定義了日誌的切分方式——把每一天的日誌歸檔到一個文件中,以防止日誌填滿整個磁盤空間--> <FileNamePattern>${logback.logdir}/info.${logback.appname}.%d{yyyy-MM-dd}.log</FileNamePattern> <!--只保留最近90天的日誌--> <maxHistory>90</maxHistory> <!--用來指定日誌文件的上限大小,那麼到了這個值,就會刪除舊的日誌--> <!--<totalSizeCap>1GB</totalSizeCap>--> </rollingPolicy> <!--日誌輸出編碼格式化--> <encoder> <charset>UTF-8</charset> <pattern>%d [%thread] %-5level %logger{36} %line - %msg%n</pattern> </encoder> </appender> <!--輸出到文件 另外一種常見的日誌輸出到文件,隨着應用的運行時間愈來愈長,日誌也會增加的愈來愈多, 將他們輸出到同一個文件並不是一個好辦法。RollingFileAppender用於切分文件日誌: --> <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--若是隻是想要 Error 級別的日誌,那麼須要過濾一下,默認是 info 級別的,ThresholdFilter--> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>Error</level> </filter> <!--日誌名稱,若是沒有File 屬性,那麼只會使用FileNamePattern的文件路徑規則 若是同時有<File>和<FileNamePattern>,那麼當天日誌是<File>,明天會自動把今天 的日誌更名爲今天的日期。即,<File> 的日誌都是當天的。 --> <File>${logback.logdir}/error.${logback.appname}.log</File> <!--滾動策略,按照時間滾動 TimeBasedRollingPolicy--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--文件路徑,定義了日誌的切分方式——把每一天的日誌歸檔到一個文件中,以防止日誌填滿整個磁盤空間--> <FileNamePattern>${logback.logdir}/error.${logback.appname}.%d{yyyy-MM-dd}.log</FileNamePattern> <!--只保留最近90天的日誌--> <maxHistory>90</maxHistory> <!--用來指定日誌文件的上限大小,那麼到了這個值,就會刪除舊的日誌--> <!--<totalSizeCap>1GB</totalSizeCap>--> </rollingPolicy> <!--日誌輸出編碼格式化--> <encoder> <charset>UTF-8</charset> <pattern>%d [%thread] %-5level %logger{36} %line - %msg%n</pattern> </encoder> </appender> <!--必選節點 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"/> <appender-ref ref="consoleLog3"/> </root> </configuration>