Log4j是apache公司開發(fā)的一款日志管理系統(tǒng),可以高效的管理系統(tǒng)中出現(xiàn)的BUG或者各種信息,并且可以已文本的方式或者數(shù)據(jù)庫存入的方式來記錄數(shù)據(jù)
第一步:導(dǎo)入依賴
在pom.xml中導(dǎo)入Log4j依賴
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
第二步:創(chuàng)建數(shù)據(jù)庫
create table error
(
Id int not null AUTO_INCREMENT Primary Key comment '主鍵id',
Log_Level varchar(100) not null comment '日志級別',
Log_Message varchar(500) not null comment '日志信息',
Log_Tim datetime DEFAULT CURRENT_TIMESTAMP comment '日志時間'
) engine = innodb
default charset = utf8;
第三步:配置log4j.properties配置文件
在Resources文件夾下創(chuàng)建一個log4j.properties文件
編寫配置文件
# log4j 日志系統(tǒng): 將日志內(nèi)容插入到數(shù)據(jù)庫
log4j.rootLogger=DEBUG, DB, console
# 指定Appender輸出端
log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender
# 指定數(shù)據(jù)庫連接池
log4j.appender.DB.URL=jdbc:mysql://localhost:3306/data
# 指定數(shù)據(jù)庫驅(qū)動(注意區(qū)分5.7與8.0)
log4j.appender.DB.driver=com.mysql.cj.jdbc.Driver
# 指定數(shù)據(jù)庫用戶名
log4j.appender.DB.user=root
# 指定數(shù)據(jù)庫密碼
log4j.appender.DB.password=passwd
# 指定數(shù)據(jù)庫SQL語句
log4j.appender.DB.sql=INSERT INTO error(Log_Level,Log_Message) VALUES('%p','%m')
# 指定Layout日志格格式化器
log4j.appender.DB.layout=org.apache.log4j.PatternLayout
# 將日志輸出到控制臺
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}]-[%t]-[%F:%L]-[%p]-[%c]-%m%n
log4j.appender.console.encoding=UTF-8
第四步:在程序代碼中將出現(xiàn)的BUG存入數(shù)據(jù)庫
這是個測試類
package com.example.userinfoserver;
import org.apache.log4j.Logger;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class UserInfoServerApplicationTests {
// 導(dǎo)入Logger類
private static Logger logger = Logger.getLogger(UserInfoServerApplicationTests.class);
@Test
void TestDemo01() {
// 將把數(shù)據(jù)提報,并且存入數(shù)據(jù)庫
logger.error("這是一個示例BUG");
}
}
運行測試類
控制臺輸出
數(shù)據(jù)庫記錄的數(shù)據(jù)
可以看見,控制臺和數(shù)據(jù)庫表中都記錄了自己定義的錯誤提示
附帶參數(shù)說明
日志級別
Log4J 在 org.apache.log4j.Level 類中定義了OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL七種日志級別:
日志級別 | 參數(shù)說明 |
---|---|
OFF | 最高日志級別,關(guān)閉左右日志 |
FATAL | 將會導(dǎo)致應(yīng)用程序退出的錯誤 |
ERROR | 發(fā)生錯誤事件,但仍不影響系統(tǒng)的繼續(xù)運行 |
WARN | 警告,即潛在的錯誤情形 |
INFO | 一般和在粗粒度級別上,強調(diào)應(yīng)用程序的運行全程 |
DEBUG | 一般用于細粒度級別上,對調(diào)試應(yīng)用程序非常有幫助 |
ALL | 最低等級,打開所有日志記錄 |
注:一般只使用4個級別,優(yōu)先級從高到低為 ERROR > WARN > INFO > DEBUG文章來源:http://www.zghlxwxcb.cn/news/detail-478183.html
Appender(輸出端)
Appender 用來指定日志輸出到哪個地方,可以同時指定日志的輸出目的地。Log4j 常用的輸出目的地有以下幾種:文章來源地址http://www.zghlxwxcb.cn/news/detail-478183.html
輸出端類型 | 作用 |
---|---|
ConsoleAppender | 將日志輸出到控制臺 |
FileAppender | 將日志輸出到文件中 |
DailyRollingFileAppender | 將日志輸出到一個日志文件,并且每天輸出到一個新的文件 |
RollingFileAppender | 將日志信息輸出到一個日志文件,并且指定文件的尺寸,當文件大 小達到指定尺寸時,會自動把文件改名,同時產(chǎn)生一個新的文件 |
JDBCAppender | 把日志信息保存到數(shù)據(jù)庫中 |
Layout(日志格式化器)
格式化器類型 | 作用 |
---|---|
HTMLLayout | 格式化日志輸出為HTML表格形式 |
SimpleLayout | 簡單的日志輸出格式化,打印的日志格式為(info - message) |
PatternLayout | 最強大的格式化期,可以根據(jù)自定義格式輸出日志,如果沒有指定轉(zhuǎn)換格式,就是用默認的轉(zhuǎn)換格式 |
日志的輸出格式
log4j 采用類似 C 語言的 printf 函數(shù)的打印格式格式化日志信息,具體的占位符及其含義如下:
%m 輸出代碼中指定的日志信息
%p 輸出優(yōu)先級,及 DEBUG、INFO 等
%n 換行符(Windows平臺的換行符為 "\n",Unix 平臺為 "\n")
%r 輸出自應(yīng)用啟動到輸出該 log 信息耗費的毫秒數(shù)
%c 輸出打印語句所屬的類的全名
%t 輸出產(chǎn)生該日志的線程全名
%d 輸出服務(wù)器當前時間,默認格式為 ISO8601,也可以在后面指定格式。如:%d{yyyy年MM月dd日 HH:mm:ss}
%l 輸出日志時間發(fā)生的位置,包括類名、發(fā)生的線程,以及在代碼中的行數(shù),如:Test.main(Test.java:10)
%F 輸出日志消息產(chǎn)生時所在的文件名稱
%L 輸出代碼中的行號
%x 輸出和當前線程相關(guān)的 NDC(嵌套診斷環(huán)境)
%% 輸出一個 "%" 字符
可以在 % 與字符之間加上修飾符來控制最小寬度、最大寬度和文本的對其方式。如:
%5c 輸出category名稱,最小寬度是5,category<5,默認的情況下右對齊
%-5c 輸出category名稱,最小寬度是5,category<5,"-"號指定左對齊,會有空格
%.5c 輸出category名稱,最大寬度是5,category>5,就會將左邊多出的字符截掉,<5不會有空格
%20.30c category名稱<20補空格,并且右對齊,>30字符,就從左邊交遠銷出的字符截掉
到了這里,關(guān)于Springboot配置Log4j日志系統(tǒng),并將日志存入數(shù)據(jù)庫的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!