springboot日誌輸出到檔案

2022-06-11 11:42:09 字數 1907 閱讀 7765

今天來談一談日誌,主要是說一說springboot的日誌,因為最近在學習springboot。首先在寫**的時候,要養成記日誌的習慣,這點真的很重要,因為之前吃了很多虧。過去我對日誌很不在意,該有的日誌沒有,不該有的日誌卻隨意輸出。新換的工作,上司對日誌有嚴格的要求,也就慢慢開始注意了。

一般而言,乙個介面或者說一段程式,其入口要有日誌,記錄傳入的資料是什麼;部分重要的處理邏輯要有日誌輸出;程式出口也要有日誌,記錄其最終的處理結果。這樣在解決生產上的問題時,可以很快的定位問題的位置,是傳入資料的問題還是我們**邏輯寫錯了,總比憑空想象的好,要相信計算機,日誌是不會騙人的。

還有一點,在生產上嚴禁使用system.out輸出,效能太低,原因是system.out輸出會導致執行緒等待(同步),而使用logger輸出執行緒不等待日誌的輸出(非同步),而繼續執行。

接下來看一看springboot的日誌配置,說一下把日誌記錄到檔案中的配置方式。

springboot推薦的日誌類庫是slf4j、日誌系統為logback,確實我回頭一看專案中使用的都是slf4j,說明這個東西確實有他的優點。

上文中也說了一點,slf4j有個介面叫logger,提供了豐富的日誌輸出方法,包含了所有日誌級別的輸出。使用方式也是特別的簡單,用slf4j的工廠類獲取乙個logger ,然後就可以輸出日誌了,預設情況下,日誌只會輸出到控制台。

不過有些細節需要注意,否則配置不生效,我測試了幾種情況。

如果,兩者都配置了:logging.file=mylog.log、logging.path=d:/data/mylog,注意windos的路徑(後面配置檔案中也是/),此時並不會在d盤下生成日誌檔案,只會在專案的根目錄下建立乙個mylog.log的檔案(workspace中,此專案的根目錄)。

其原因是,沒有logback-spring.xml配置檔案,系統只認識logging.file,不認識logging.path。

且看logback-spring.xml的配置詳情。注意$和$分別是獲取配置檔案中的路徑和檔名稱,必須使用這兩個全域性的配置去獲取。然後重啟專案,發現在配置的目錄下,有了相應的日誌檔案。

日誌檔案的配置結構:

標籤level="debug"是設定日誌級別:作用是debug級別及其以上級別的日誌會輸出(debug、info、warn、error,,,),注意此處的level是乙個下線,比其日誌級別高的日誌資訊也會輸出,很重要。

additivity="false"是配置此logger是否提交給其他的logger或者root節點,如果true,則root也會執行或者其他的可以攔截到的logger節點,且logger的level優先順序高;否則不會執行,在本配置檔案中即控制台不會輸出com.example.xyx.myspringboottest包下檔案的日誌。

(5)root:根節點,在logback-spring.xml中只引用了控制台日誌輸出配置,不會輸出到檔案,如果想輸出到檔案,可以寫再寫乙個引用。level=info,在控制台輸出into級別及其以上級別的日誌。會攔截所有包下的日誌,但是其輸出會受到logger的影響,即注意logger中的additivity屬性,如果為false,com.example.xyx.myspringboottest包下的日誌不會輸出到控制台。

Python Logging實現日誌輸出到檔案

記錄下python中使用logging實現日誌輸出到檔案,例項如下 coding utf 8 usr bin python import logging from logging import handlers 建立乙個logger並設定日誌等級 logger logging.getlogger l...

Logback日誌輸出到ELK

command logstash f etc logstash conf.d logstash.conf logstash 啟動時使用的配置檔案 volumes pwd logstash conf.d etc logstash conf.d logstash 配檔案位置 pwd logstash c...

Kettle日誌輸出到檔案方法

轉 網上有很多關於如何實現kettle日誌輸出到日誌檔案的方法,但需要修改 重新編譯,比較麻煩。這裡面提供的方法可以解決兩個問題 1 把日誌輸出到檔案 2 日誌的時間精確到毫秒 有時kettle執行的很快,1 秒之內就輸出好幾條記錄,而預設日誌的時間只到秒級,這樣日誌的順序就是混亂的。用這種方法就可...