新聞中心
隨著軟件規(guī)模的不斷擴(kuò)大以及用戶數(shù)量的不斷增加,日志記錄已經(jīng)成為了一項(xiàng)必不可少的工作。而作為一種用于記錄應(yīng)用程序運(yùn)行時(shí)狀態(tài)的工具,日志記錄幫助我們快速定位問(wèn)題、分析錯(cuò)誤信息并進(jìn)行數(shù)據(jù)挖掘等工作,使我們能夠更好地了解軟件的運(yùn)行狀況,進(jìn)而改進(jìn)軟件設(shè)計(jì)和開(kāi)發(fā)過(guò)程。

安定ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書(shū)合作)期待與您的合作!
在實(shí)際的軟件開(kāi)發(fā)過(guò)程中,我們常常使用log4j工具來(lái)記錄應(yīng)用程序的日志信息,它主要是由Java編寫(xiě)的一套日志記錄組件,可以通過(guò)配置文件來(lái)靈活地控制日志的輸出控制以及日志信息的格式化等方面的問(wèn)題,并且還提供了各種插件和擴(kuò)展點(diǎn),使得我們能夠輕松地?cái)U(kuò)展和定制我們所需要的功能。
但是在使用log4j這一工具進(jìn)行日志記錄的過(guò)程中,我們通常將日志信息記錄到文件或控制臺(tái)中,如果想要在日志信息中加入時(shí)間戳、線程ID等信息,需要手動(dòng)進(jìn)行處理,并且在大規(guī)模的系統(tǒng)中,日志文件的數(shù)量和大小會(huì)變得非常龐大,如果要進(jìn)行日志文件的分析和查詢,通常需要進(jìn)行大量的人工工作,這必然會(huì)給我們帶來(lái)很大的麻煩與不便。
為了解決這些問(wèn)題,我們可以借助log4j工具的數(shù)據(jù)庫(kù)記錄功能,將日志信息直接記錄到數(shù)據(jù)庫(kù)中,進(jìn)而實(shí)現(xiàn)方便的日志信息查詢和分析等工作。下面我們將詳細(xì)介紹如何使用log4j工具將日志記錄到數(shù)據(jù)庫(kù)中。
一、 初始化數(shù)據(jù)庫(kù)
在使用log4j工具記錄日志信息前,我們需要先進(jìn)行數(shù)據(jù)庫(kù)的初始化。我們以MySQL數(shù)據(jù)庫(kù)為例,首先需要?jiǎng)?chuàng)建一個(gè)新的數(shù)據(jù)庫(kù),然后創(chuàng)建一個(gè)日志表用于存儲(chǔ)日志信息,最后還需要設(shè)置好數(shù)據(jù)庫(kù)的相關(guān)配置信息。
1.1 創(chuàng)建數(shù)據(jù)庫(kù)
我們可以通過(guò)MySQL Workbench等工具來(lái)方便地創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù),這里我們創(chuàng)建了一個(gè)名為“l(fā)og4j”的新數(shù)據(jù)庫(kù),具體操作如下:
① 進(jìn)入MySQL Workbench,選擇Create a new schema:

② 輸入數(shù)據(jù)庫(kù)的名稱(本文中我們命名為“l(fā)og4j”),設(shè)置字符集為utf8mb4,點(diǎn)擊Apply:

③ 在左側(cè)導(dǎo)航欄中可以看到剛剛創(chuàng)建的數(shù)據(jù)庫(kù):

1.2 創(chuàng)建日志表
在創(chuàng)建好數(shù)據(jù)庫(kù)后,我們需要?jiǎng)?chuàng)建一個(gè)新的表用于存儲(chǔ)日志信息。表的結(jié)構(gòu)需要包括以下幾個(gè)字段:
名稱 | 類(lèi)型 | 是否非空 | 備注
–|–|–|–
id | int | √ | 自增編號(hào)
level | varchar(10) | √ | 日志級(jí)別
source | varchar(100) | √ | 日志來(lái)源
message | longtext | √ | 日志內(nèi)容
timestamp | bigint | √ | 時(shí)間戳
在MySQL Workbench中,我們可以通過(guò)以下方式來(lái)創(chuàng)建日志表:
① 在導(dǎo)航欄中選擇上一步中創(chuàng)建的數(shù)據(jù)庫(kù)(本文中為“l(fā)og4j”):

② 選擇New Table:

③ 輸入表名(本文中為“l(fā)og”),然后添加id、level、source、message和timestamp字段:

④ 在表的屬性中點(diǎn)擊PK選項(xiàng),將id字段設(shè)置為主鍵:

最終創(chuàng)建好的日志表的結(jié)構(gòu)如下所示:
“` mysql
CREATE TABLE `log` (
`id` int NOT NULL AUTO_INCREMENT,
`level` varchar(10) NOT NULL,
`source` varchar(100) NOT NULL,
`message` longtext NOT NULL,
`timestamp` bigint NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
“`
1.3 設(shè)置數(shù)據(jù)庫(kù)配置信息
我們需要在代碼中設(shè)置好數(shù)據(jù)庫(kù)的連接信息,以便log4j能夠連接并將日志信息記錄到數(shù)據(jù)庫(kù)中。在這里,我們使用XML配置文件的方式來(lái)進(jìn)行連接配置,具體代碼如下:
“` xml
“`
其中,參數(shù)URL表示數(shù)據(jù)庫(kù)的連接地址,value的值為“jdbc:mysql://${database.host}:${database.port}/${database.name}”,其中${database.host}、${database.port}和${database.name}分別為MySQL服務(wù)器地址、端口號(hào)和數(shù)據(jù)庫(kù)名稱,分別對(duì)應(yīng)為localhost、3306和log4j。參數(shù)driver表示MySQL數(shù)據(jù)庫(kù)驅(qū)動(dòng),value的值為“com.mysql.jdbc.Driver”;參數(shù)user和password分別表示登錄數(shù)據(jù)庫(kù)需要的用戶名和密碼;參數(shù)connectionTimeout表示連接數(shù)據(jù)庫(kù)的超時(shí)時(shí)間設(shè)置;參數(shù)threshold表示日志級(jí)別的閾值,這里將其設(shè)置為DEBUG級(jí)別;參數(shù)layout表示日志信息的格式化方式,這里使用了%ConversionPattern格式化輸出;參數(shù)filter表示日志信息的過(guò)濾器,這里選擇使用org.apache.log4j.varia.DenyAllFilter拒絕所有信息輸出。
二、記錄日志信息到數(shù)據(jù)庫(kù)
在設(shè)置好數(shù)據(jù)庫(kù)配置信息后,我們需要在代碼中記錄需要的日志信息。我們可以使用log4j提供的日志級(jí)別(INFO、WARN、ERROR、DEBUG等)來(lái)控制日志的輸出,也可以設(shè)置特定的消息格式來(lái)記錄指定的日志記錄。
在這里,我們以一個(gè)簡(jiǎn)單的JavaWeb項(xiàng)目為例,演示如何將日志信息記錄到數(shù)據(jù)庫(kù)中。
2.1 創(chuàng)建JavaWeb項(xiàng)目
我們需要?jiǎng)?chuàng)建一個(gè)JavaWeb項(xiàng)目,這里我們使用Maven來(lái)進(jìn)行項(xiàng)目的構(gòu)建和管理。
在項(xiàng)目中,我們需要引入log4j的相關(guān)依賴,以便能夠使用它提供的日志記錄能力。在Maven項(xiàng)目中,我們可以將相關(guān)依賴添加到pom.xml文件中,具體代碼如下:
“` xml
log4j
log4j
1.2.17
mysql
mysql-connector-java
8.0.26
“`
其中,log4j的版本號(hào)為1.2.17,MySQL驅(qū)動(dòng)的版本號(hào)為8.0.26。
2.2 編寫(xiě)代碼
接下來(lái),我們將編寫(xiě)JavaWeb應(yīng)用程序,具體代碼如下:
“` java
package com.log4j.database;
import org.apache.log4j.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class LoggerServlet extends HttpServlet {
private static final Logger logger = Logger.getLogger(LoggerServlet.class);
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
logger.info(“This is info log.”);
logger.warn(“This is warning log.”);
logger.error(“This is error log.”, new Exception(“MY EXCEPTION”));
}
}
“`
在這個(gè)Servlet中,我們使用Logger.getLogger()方法獲取log4j的Logger實(shí)例,然后使用Logger實(shí)例的info、warn、error等方法記錄日志信息。
2.3 設(shè)置log4j配置文件
接下來(lái),我們需要在代碼中指定log4j的配置文件。這里我們創(chuàng)建一個(gè)名為“l(fā)og4j.properties”的文件,將其保存到項(xiàng)目的src/mn/resources目錄下,具體代碼如下:
“` properties
log4j.rootLogger=DEBUG, console, database
# 控制臺(tái)輸出
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.SSS} [%t] %p %c – %m%n
# 數(shù)據(jù)庫(kù)日志記錄
log4j.appender.database=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.database.URL=jdbc:mysql://localhost:3306/log4j
log4j.appender.database.driver=com.mysql.jdbc.Driver
log4j.appender.database.user=root
log4j.appender.database.password=root123
log4j.appender.database.connectionTimeout=5000
log4j.appender.database.threshold=DEBUG
log4j.appender.database.layout=org.apache.log4j.PatternLayout
log4j.appender.database.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %p %c – %m%n
log4j.logger.com.log4j.database=DEBUG, console, database
“`
其中,需要配置rootLogger,將其設(shè)置為DEBUG級(jí)別,并指定輸出到console和database兩個(gè)輸出類(lèi)別。在輸出類(lèi)別中,console類(lèi)別將日志信息輸出到控制臺(tái)中,database類(lèi)別將日志信息輸出到MySQL數(shù)據(jù)庫(kù)中。數(shù)據(jù)庫(kù)的連接信息需要根據(jù)自己的實(shí)際情況來(lái)進(jìn)行配置,這里的配置信息如下:
– URL:jdbc:mysql://localhost:3306/log4j
– driver:com.mysql.jdbc.Driver
– user:root
– password:root123
以上是默認(rèn)配置,根據(jù)實(shí)際情況自行更改配置。
2.4 運(yùn)行項(xiàng)目
接下來(lái),我們需要運(yùn)行JavaWeb項(xiàng)目,驗(yàn)證日志記錄功能。我們可以使用Tomcat來(lái)運(yùn)行這個(gè)項(xiàng)目,具體操作如下:
① 在命令行中切換到項(xiàng)目根目錄下:
“` bash
cd ~/log4j-database/
“`
② 使用Maven編譯項(xiàng)目,產(chǎn)生.war文件:
“` bash
mvn clean package
“`
③ 將.war文件復(fù)制到Tomcat的“webapps”目錄下:
“` bash
cp target/log4j-database.war ${TOMCAT_HOME}/webapps/
“`
④ 啟動(dòng)Tomcat服務(wù)器:
“` bash
cd ${TOMCAT_HOME}/bin
./startup.sh
“`
⑤ 使用瀏覽器訪問(wèn)http://localhost:8080/log4j-database/LoggerServlet,觀察消息輸出:

可以看到,通過(guò)log4j我們將日志信息成功地記錄到了MySQL數(shù)據(jù)庫(kù)中。
三、日志信息的查詢和分析
使用log4j工具將日志記錄到數(shù)據(jù)庫(kù)中后,我們可以方便地對(duì)日志信息進(jìn)行查詢和分析。這里我們以MySQL Workbench為例,演示如何使用SQL語(yǔ)句查詢?nèi)罩拘畔ⅰ?/p>
3.1 查詢所有日志信息
我們可以使用以下SQL語(yǔ)句查詢所有的日志信息:
“` mysql
SELECT * FROM log;
“`
執(zhí)行完以上SQL后,可以得到所有的日志信息,如下圖所示:

上圖中可以看到,我們將日志信息成功地記錄到了數(shù)據(jù)庫(kù)中,并且通過(guò)新建一張表的方式進(jìn)行了統(tǒng)一記錄。
3.2 查詢特定時(shí)間段內(nèi)的日志信息
如果需要查詢特定時(shí)間段內(nèi)的日志信息,我們需要使用如下SQL語(yǔ)句:
“` mysql
SELECT * FROM log WHERE timestamp BETWEEN UNIX_TIMESTAMP(‘2023-07-14 01:00:00’) AND UNIX_TIMESTAMP(‘2023-07-14 23:59:59’);
“`
可以看到,以上SQL將查詢從“2023-07-14 01:00:00”到“2023-07-14 23:59:59”時(shí)間段內(nèi)的日志信息。
3.3 統(tǒng)計(jì)所有日志信息的數(shù)量
若需要對(duì)日志信息的總數(shù)進(jìn)行統(tǒng)計(jì),我們可以使用如下SQL語(yǔ)句:
“` mysql
SELECT COUNT(*) FROM log;
“`
執(zhí)行以上SQL后,可以得到總的日志信息數(shù)量:

以上就是的詳細(xì)介紹以及操作方法。在日志記錄方面,我們希望針對(duì)實(shí)際需求選擇不同的記錄方式和工具,才能更好地滿足我們的需求和幫助我們更好地開(kāi)發(fā)和維護(hù)軟件系統(tǒng)。
相關(guān)問(wèn)題拓展閱讀:
- 如何使用log4j把日志寫(xiě)入數(shù)據(jù)庫(kù)
如何使用log4j把日志寫(xiě)入數(shù)據(jù)庫(kù)
用JDBC的念好getGeneratedKeys,返回敬態(tài)的是Oracle 的rowid.但是就是修改代碼,比較仔稿鉛麻煩,之一次返回rowid, 第二次再通過(guò)rowid再查一次數(shù)據(jù)庫(kù)。 view plain copy String sql = “insert into xx_cust(cust_type,cust_name,login_name)”log4j 記錄到數(shù)據(jù)庫(kù)的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于log4j 記錄到數(shù)據(jù)庫(kù),使用log4j將日志記錄到數(shù)據(jù)庫(kù)中,如何使用log4j把日志寫(xiě)入數(shù)據(jù)庫(kù)的信息別忘了在本站進(jìn)行查找喔。
成都創(chuàng)新互聯(lián)科技有限公司,是一家專注于互聯(lián)網(wǎng)、IDC服務(wù)、應(yīng)用軟件開(kāi)發(fā)、網(wǎng)站建設(shè)推廣的公司,為客戶提供互聯(lián)網(wǎng)基礎(chǔ)服務(wù)!
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡(jiǎn)單好用,價(jià)格厚道的香港/美國(guó)云服務(wù)器和獨(dú)立服務(wù)器。創(chuàng)新互聯(lián)——四川成都IDC機(jī)房服務(wù)器托管/機(jī)柜租用。為您精選優(yōu)質(zhì)idc數(shù)據(jù)中心機(jī)房租用、服務(wù)器托管、機(jī)柜租賃、大帶寬租用,高電服務(wù)器托管,算力服務(wù)器租用,可選線路電信、移動(dòng)、聯(lián)通機(jī)房等。
分享名稱:使用log4j將日志記錄到數(shù)據(jù)庫(kù)中(log4j記錄到數(shù)據(jù)庫(kù))
文章起源:http://www.dlmjj.cn/article/cdpphej.html


咨詢
建站咨詢
