天天看點

将日志寫入資料庫

之前做的一個項目有這麼個要求,在日志管理系統裡,需要将某些日志資訊存儲到資料庫裡,供使用者、管理者檢視分析。是以我就花了點時間搞了一下這一功能

将日志寫入資料庫

,各位請看。

摘要:我們知道log4j能提供強大的可配置的記日志功能,有寫檔案的、列印到控制台的等等,但有時我們需要它把日志輸出到背景資料庫中,log4j的強大的可擴充性支援了這一點,以下就是具體的實作 。 關鍵詞:log,log4j,日志,Java,DB,資料庫, slf4j 前提:已經配置好 slf4j、 log4j,能正常的往檔案或控制台寫日志 。 需求:将日志寫入到資料庫中 。 說明:使用log4j-1.2.17.jar,slf4j-api-1.7.5.jar,slf4j-log4j12-1.6.6.jar。

步驟一:

你得先能寫入資料庫,編寫一個能往資料庫日志表中寫資料的接口,無論是WebService還是什麼,這裡假如是一個Java接口。

Log是定義的一個日志類,使用LogService對象調用logBll.add(Log log)方法即能夠向資料庫中添加一條日志資訊。

1 2 3 4 5 6 7 8 9

public

class

Log {

private

Long id;

private

String logNum;

private

String userId;

private

Calendar time;

private

int

type;

private

String content;

...

}

步驟二:

編寫一個繼承自 AppenderSkeleton類的類,并重寫它的append方法。在append方法裡面,即調用了上一步定義的Java接口,logBll.add(log),向資料庫中寫入一條日志資訊。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

public

class

DBAppender

extends

AppenderSkeleton {

private

LogService logBLL =

new

LogService();

@Override

protected

void

append(LoggingEvent arg0) {

if

(!arg0.getLoggerName().startsWith(Constants.ProjetNS))

return

;

Log log =

new

Log();

log.setType(arg0.getLevel().toInt());

log.setTime(Calendar.getInstance());

log.setUserId(

"system"

);

log.setContent(arg0.getRenderedMessage());

logBll.add(log);

}

}

步驟三:

改新log4j.properties配置檔案,類似如下所示。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

# Root logger option

log4j.rootLogger=WARN, stdout, file, db

# Direct log messages to stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.Target=System.out

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

log4j.appender.file = org.apache.log4j.DailyRollingFileAppender

log4j.appender.file.File = logs/log.log

log4j.appender.file.Append = true

log4j.appender.file.Threshold = ERROR

log4j.appender.file.layout = org.apache.log4j.PatternLayout

log4j.appender.file.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n

log4j.appender.db = com.aitanjupt.angel.log.DBAppender

以上檔案主要增加配置了一個日志輸出方向,向資料庫輸出,并指定了具體的處理類。 在需要輸出日志的地方,正常的使用: private  Logger logger = LoggerFactory . getLogger (SpringServiceSupport. class ); logger .error( ex);...即可。

将日志寫入資料庫

</span

轉載于:https://www.cnblogs.com/mingf123/p/3845030.html