log4j日誌儲存到資料庫

2021-05-22 09:45:04 字數 1375 閱讀 9593

昨天公司說要在系統中新增日誌查詢統計功能,剛開始第乙個念頭就是用io流讀取日誌檔案,然後持久化,最後在系統中查詢。結果看了一些log4j的說明文件後發現,原來log4j本身就有將日誌資訊存入資料庫功能,這樣就大大節省了開發的時間,半天搞定。現在把方法記錄下來,希望對有需要的朋友有所幫助。

一、前提條件

系統必須是使用log4j進行日誌管理,否則方法無效。

系統必須包含commons-logging-***.jar,log4j-***.jar這兩個jar包,***為版本號。

二、操作步驟

1、建立日誌表

要把日誌持久化,必須在資料庫中建立一張用來儲存日誌資訊的表,表內字段為日誌

的乙個主要屬性包括:操作類,執行方法,列印時間,日誌級別,日誌內容。

create table reslog (logid varchar2(20) not null,

class varchar2(200),

method varchar2(100),

createtime date,

loglevel varchar2(50),

msg varchar2(4000))

因為儲存的類為類的全部路徑,所以class字段長度需要比較大。

2、日誌管理配置

log4j主要有兩種配置檔案.properties和.xml,這裡以properties檔案為基礎來講

述,關於xml檔案的配置,相信大家看完下面的介紹也一樣能輕鬆完成。

通常在log4j.properties檔案的第一行是:

log4j.rootlogger= ***,這句是控制日誌的輸出,如果想吧日誌輸出到資料庫,

則需要在***中新增「db」,如log4j.rootlogger=info,stdout,platform,db。上面

這句就是把日誌中級別為info的資訊輸出到stdout,platform和db

(database)中。

配置好如上的資訊,log4j就知道使用者是想把資訊存入資料庫,接下來我們就要來

(logid,class,method,createtime,loglevel,msg)

values (sq_reslog_logid.nextval,'%c','%m',

to_date('%d','yyyy-mm-dd

hh24:mi:ss'),'%p','%m')

通過上面的配置,現在再啟動服務,log4j就會自動把原來儲存在.log檔案中的資訊,同時儲存到資料庫了。

當然,log4j還支援自定義引數,如列印日誌時當前的使用者資訊等,這個以後以機會再說。

如果系統中的部分元件列印資訊中包含"'"(單引號),系統會報「確實逗號」的錯誤,搞了半天也解決不了,還好列印的都是info,把列印級別設為「warn」就ok了

log4j日誌系統 Log4j

1.1 log4j的三大核心元件 1.2 loggers 記錄器 1.4 layouts 布局 org.apache.log4j.htmllayout 以html 形式布局 org.apache.log4j.patternlayout 可以靈活地指定布局模式 org.apache.log4j.lay...

log4j 日誌輸出至資料庫

1 首先配置log4j 2 logger宣告 log4j.logger.system warn,database 第乙個代表級別,第二個代表標識 類中宣告時需要以 private logger logger logger.getlogger system 才能保證持久化到資料庫中成功 3 log4j...

log4j記錄不同的日誌 Log4j 日誌記錄方法

logger類具有處理日誌記錄活動的方法。我們可以使用兩個靜態方法建立logger類的例項 public static logger getrootlogger public static logger getlogger string name 第乙個方法返回沒有名稱的根日誌記錄器。第二個方法按名...