springProfile標籤中定義多個環境
我們可以通過springProfile為不同的環境配置不同的日誌輸出規則,比如生產環境不開啟console,級別為info等 下面來看看示例,
logback-spring.xml文件,
然後我們運行應用時,根據指定的spring.profile.active進行選擇對應的日誌配置,如何來指定運行時激活的profile呢,有很多方式,比如我們可以直接在yml文件中指定,
application.yml文件,
spring: profiles: active: prod
在程序啟動時,可以看到當前激活的profile,
The following profiles are active: prod
還有其它方式,不是本文的重點,就不多說了。
另外, springProfile的name可以包含多個名字,比如
ThresholdFilter 日誌過濾
首先要說下日誌級別的定義,
- ALL 各級包括自定義級別
- DEBUG 指定細粒度信息事件是最有用的應用程序調試
- ERROR 錯誤事件可能仍然允許應用程序繼續運行
- FATAL 指定非常嚴重的錯誤事件,這可能導致應用程序中止
- INFO 指定能夠突出在粗粒度級別的應用程序運行情況的信息的消息
- OFF 這是最高等級,為了關閉日誌記錄
- TRACE 指定細粒度比DEBUG更低的信息事件
- WARN 指定具有潛在危害的情況
它們關係如下:
ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF。
ThresholdFilter: 臨界值過濾器,過濾掉低於指定臨界值的日誌。比如,
WARN
會過濾掉低於WARN的日誌。
我們可以通過這種方式對日誌進行分類,比如輸出正常日誌和錯誤日誌,就可以用類型下面這樣的配置,
/app/applogs/test-system.log %d{yyyy-MM-dd HH:mm:ss.SSS} %sep[%thread] %sep%p %sep%c %sep[TxId : %X{PtxId} , SpanId : %X{PspanId}] %sep%msgToo%exToo%n DEBUG /app/applogs/test-system.%d{yyyy-MM-dd}.log /app/applogs/test-system-error.log %d{yyyy-MM-dd HH:mm:ss.SSS} %sep[%thread] %sep%p %sep%c.%M \\(%F:%L\\) %sep[TxId : %X{PtxId} , SpanId : %X{PspanId}] %sep%msgToo%exToo%n WARN /app/applogs/test-system-error.%d{yyyy-MM-dd}.log
控制檯輸出日誌
這個比較簡單,
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%-5level] [%logger:%L] %msg%n
除了常用的encoder屬性,還可以設置target屬性,默認是System.out。
引入默認配置
一般springboot項目,我們會在logback.xml中看到這樣的配置,
這是springboot默認提供的日誌配置,我們可以在springboot jar包下看到它的源碼,
可以看到引入了defaults.xml,console-appender.xml和file-appdender.xml,有興趣可以通過源碼繼續瞭解。這裡就不詳細說了。
springboot項目配置輸出sql
springboot項目已經不需要像以前的SSM一樣,類似下面這樣配置sql了,
我們只需要把 root level設置成debug就可以看到mybatis的日誌了。但是這樣配置日誌又太多了,也不好追蹤問題。所以我們一般只需要配置dao所在的包就可以了,
root的level還是info,這樣既能看到sql,也不會有其它太多日誌干擾。
閱讀更多 科技伍小黑 的文章