所有的項目都會有日志,日志文件是用於記錄系統操作事件的記錄文件或文件集合,可分為事件日志和消息日志。具有處理歷史數據、診斷問題的追蹤以及理解系統的活動等重要作用。這節描述如何用springboot記錄日志。
記錄日志的方法
一般記錄日志的方法有兩種
- Commons-logging:
private static final Log log = logFactory.getLog(Xxxxxx.class);
- SLF4J:
private static final Logger logger = logFactory.getLogger(Xxxxxx.class);
這兩種方法其實都差不多,它們定義log/logger的方法也差不多...
日志級別
日志級別共八級,一般我們用到的日志只有中間四級,下面簡單介紹一下
ALL < TEACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
ALL 最低等級的,用於打開所有日志記錄。
TRACE 很低的日志級別,一般不會使用。
DEBUG 指出細粒度信息事件對調試應用程序是非常有幫助的,主要用於開發過程中打印一些運行信息。
INFO 消息在粗粒度級別上突出強調應用程序的運行過程。打印一些你感興趣的或者重要的信息,這個可以用於生產環境中輸出程序運行的一些重要信息,但是不能濫用,避免打印過多的日志。
WARN 表明會出現潛在錯誤的情形,有些信息不是錯誤信息,但是也要給程序員的一些提示。
ERROR 指出雖然發生錯誤事件,但仍然不影響系統的繼續運行。打印錯誤和異常信息,如果不想輸出太多的日志,可以使用這個級別。
FATAL 指出每個嚴重的錯誤事件將會導致應用程序的退出。這個級別比較高了。重大錯誤,這種級別你可以直接停止程序了。
OFF 最高等級的,用於關閉所有日志記錄。
如果將log level設置在某一個級別上,那么比此級別優先級高的log都能打印出來。例如,如果設置優先級為WARN,那么OFF、FATAL、ERROR、WARN 4個級別的log能正常輸出,而INFO、DEBUG、TRACE、 ALL級別的log則會被忽略。Log4j建議只使用四個級別,優先級從高到低分別是ERROR、WARN、INFO、DEBUG。
log4j默認的優先級為ERROR
(以上轉自shiyonghm的博客)
application.yml配置日志
把下面這段代碼copy進去就可以了,但最后一行的com.example是需要改一改的,改成你自己的項目結構目錄即可。
logging:
file: target/app.log
level:
ROOT: WARN
com.example: TRACE
我這里設置打印了5個等級的信息
@GetMapping
public Student getStudent() {
Student student = new Student(1,"劉大炮",50,new Date());
log.trace("該學生名為:" + student.getName());
log.debug("該學生名為:" + student.getName());
log.info("該學生名為:" + student.getName());
log.error("該學生名為:" + student.getName());
log.warn("該學生名為:" + student.getName());
return student;
}
再次運行,發現日志等級高於等於TRACE的信息已被打印出來
若設置為
logging:
file: target/app.log
level:
ROOT: WARN
com.example: INFO
再次運行后,發現低於INFO等級的信息都已不再打印
若設置為OFF
logging:
file: target/app.log
level:
ROOT: WARN
com.example: OFF
不再打印任何信息