1. 程式人生 > >log4j 日誌輸出到資料庫

log4j 日誌輸出到資料庫

一、前提條件 

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

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

二、操作步驟 

      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= XXX,這句是控制日誌的輸出,如果想吧日誌輸出到資料庫, 

      則需要在XXX中新增“DB”,如log4j.rootLogger=INFO,stdout,Platform,db。上面 

      這句就是把日誌中級別為INFO的資訊輸出到STDOUT,PLATFORM和DB 

    (DATABASE)中。 

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

      配置資料庫的相關資訊(包括快取,資料庫連線資訊,和執行SQL),配置資訊如下: 

            ###JDBCAppender
             log4j.appender.db = org.apache.log4j.jdbc.JDBCAppender 

            //這個配置是選擇使用JDBCAppender方法,將日誌資訊儲存到資料庫。當然,如果你還要做其他操作,可以自己寫個類,繼承JDBCAppender就OK了。
            log4j.appender.db.BufferSize=1 

            //這個配置是告訴LOG4J,有多少條日誌資訊後才存入資料庫,我這裡是1,就是說有一條就查一條,顯然這樣在生產環境下是很影響系統性能的。
            log4j.appender.db.driver=oracle.jdbc.driver.OracleDriver 

            //這個配置是告訴LOG4J,做資料庫儲存所用的驅動。
            log4j.appender.db.URL=jdbc:oracle:thin:@<ip>:<port>:<sid> 

            //這個配置資料庫連線的URL,不用說也都知道。
            log4j.appender.db.user=XXX
             log4j.appender.db.password=XXX 

            //上面兩個是資料庫連線時的使用者名稱和密碼
            log4j.appender.db.sql=insert into RESLOG 

                  (LogId,Class,Method,createTime,LogLevel,MSG)  

                  values (SQ_RESLOG_LOGID.Nextval,'%C','%M', 

                  to_date('%d{yyyy-MM-dd HH:mm:ss}','yyyy-MM-dd  

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

            //這個配置是告訴當LOG4J吧日誌儲存資料庫時用的SQL語句。SQ_RESLOG_LOGID.Nextval是我建的一個SEQUENCE;‘%C’是日誌中的CLASS;‘%M’是列印日誌是執行到類裡的方法;‘%d’是列印的時間,它支援格式化;‘%P’是日誌級別,包括INFO、DEBUG、ERROR等;‘%m’是MSG,日誌內容。注意這裡的引數區分大小寫。
            log4j.appender.db.layout=org.apache.log4j.PatternLayout 

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

-----------------------例子:mysql

log4j.rootLogger=debug,stdout,R,db


########################################JDBCAppender
log4j.appender.db = org.apache.log4j.jdbc.JDBCAppender 
log4j.appender.db.BufferSize=10
log4j.appender.db.driver=com.mysql.jdbc.Driver
log4j.appender.db.URL=jdbc:mysql://134.32.32.122:9527/LOG_GATEWAY?useUnicode=true&characterEncoding=GBK
log4j.appender.db.user=jzgjxj
log4j.appender.db.password=abcd1234
log4j.appender.db.sql=INSERT INTO JINAN(USER_ID,LOGGER,LEVEL,MESSAGE) VALUES('191','%C','%p','%m')
log4j.appender.db.layout=org.apache.log4j.PatternLayout
log4j.appender.db.Threshold=WARN
########################################JDBCAppender


log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#log4j.appender.stdout=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.Threshold=DEBUG
log4j.appender.stdout.layout.ConversionPattern=%-5p %l%n%4x- %m%n


log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=log/log.txt
log4j.appender.R.MaxFileSize=10240KB
log4j.appender.R.MaxBackupIndex=9
log4j.appender.R.layout=org.apache.log4j.PatternLayout
#log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-4r %-5p [%t %c - %m%n
log4j.appender.R.layout.ConversionPattern=%-5p %d{yyyy-MM-dd HH:mm:ss} %l %-4r [%t\r\n    - %m%n


log4j.logger.com.tidestone.xj.corba.topoResource.TopSyncTask=debug,TopSyncTasklog
log4j.logger.com.tidestone.xj.corba.helper.PathRouteHelper=debug,TopSyncTasklog
log4j.logger.com.tidestone.xj.corba.topoResource.EmsData2NmsDataWorker=debug,TopSyncTasklog


log4j.appender.TopSyncTasklog=org.apache.log4j.RollingFileAppender
log4j.appender.TopSyncTasklog.layout=org.apache.log4j.PatternLayout
log4j.appender.TopSyncTasklog.layout.ConversionPattern=%-5p %d{MM-dd HH:mm:ss} %l%n%4x- %m%n
log4j.appender.TopSyncTasklog.File=log/TopSyncTaskLog.txt
log4j.appender.TopSyncTasklog.MaxFileSize=1000KB
log4j.appender.TopSyncTasklog.MaxBackupIndex=9

 建立資料庫:

DROP TABLE IF EXISTS `RAISECOM_JN`;
CREATE TABLE `RAISECOM_JN` (
  `USER_ID` varchar(20) DEFAULT NULL,
  `DATED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `LOGGER` varchar(500) DEFAULT NULL,
  `LEVEL` varchar(100) DEFAULT NULL,
  `MESSAGE` varchar(5000) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=gb2312;

相關推薦

log4j 日誌輸出資料庫

一、前提條件 系統必須是使用LOG4J進行日誌管理,否則方法無效。 系統必須包含commons-logging-xxx.jar,log4j-xxx.jar這兩個JAR包,XXX為版本號。 二、操作步驟 1、建立日誌表

log4j日誌輸出到文件的配置

imp 名稱 1.0 sql apach warn ring source util 1.Maven的dependency 2.log4j.properties的配置 3.Junit的Test類 4.web.xml的配置(非必要) 5.spring的db.config的配置

log4j日誌輸出使用_1

詳細 per lsm sdc org gbm rpm veh mil 轉自https://www.cnblogs.com/sky230/p/5759831.html Log4j是幫助開發人員進行日誌輸出管理的API類庫。它最重要的特點就可以配置文件靈活的設置日誌信息的優

web專案Log4j日誌輸出路徑配置問題 問題描述:一個web專案想在一個tomcat下執行多個例項(通過修改war包名稱的實現),然後每個例項都將日誌輸出到tomcat的logs目錄下例項名命名的文

問題描述:一個web專案想在一個tomcat下執行多個例項(通過修改war包名稱的實現),然後每個例項都將日誌輸出到tomcat的logs目錄下例項名命名的資料夾下進行區分檢視每個例項日誌,要求通過儘可能少的改動配置檔案,最好修改例項名後可以不修改log4j的配置檔案。 實現分析:一般實現上面需求,需要在修

log4j 日誌輸出級別

一共分為五個級別:DEBUG、INFO、WARN、ERROR和FATAL。這五個級別是有順序的,DEBUG < INFO < WARN < ERROR < FATAL,明白這一點很重要,這裡Log4j有一個規則:假設設定了級別為P,如果發生了一個級別Q比P高,則可以啟動,否則遮蔽掉。

JAVA Tomcat Log4j 日誌輸出到檔案

工程引用     Log4j.jar    要輸出日誌的類中引用     import org.apache.log4j.Logger;     import org.apache.log4j.PropertyConfigurator; 建立log4j.prope

web專案Log4j日誌輸出路徑配置問題

問題描述:一個web專案想在一個tomcat下執行多個例項(通過修改war包名稱的實現),然後每個例項都將日誌輸出到tomcat的logs目錄下例項名命名的資料夾下進行區分檢視每個例項日誌,要求通過儘可能少的改動配置檔案,最好修改例項名後可以不修改log4j的配

Linux下java程式碼log4j日誌輸出中文出現亂碼,中文全部變成問號,解決辦法

問題描述: (1)log4j.xml和log4j.properties日誌輸出的編碼格式正常都設定為UTF-8 (2)cat命令獲取txt檔案,裡面的中文可以正常顯示 (3)log.***(info)中文全部出現亂碼 原因: linux本地設定的檔案編碼格式不是UT

Spark配置log4j日誌輸出

################################################################################  #①配置根Logger,其語法為:  #  #log4j.rootLogger = [level],appen

Tomcat連線池,以及 Webservice配置,以及log4j日誌輸出

用java寫的webservice,建立資料庫連線的時候,因為webservice介面要供很多使用者使用,這時如果把資料庫連線語句寫在使用者呼叫的我方的方法裡面,在方法裡面用完再關閉,也可以。但是用tomcat連線池,一開始就申請25個連線放著,最多50個(這個25和50都

log4j日誌輸出,以及生成日誌檔案

log4j.properties檔案配置如下: log4j.rootLogger=debug,appender,appender1 #如果在本地eclipse控制檯輸出 請解開下面的程式碼 #log4j.appender.appender=org.apache.log

log4j日誌輸出分級別或模組到不同檔案

一、 實現分模組,輸出到不同的日誌檔案,  以下是log4j.properties的實現   log4j.appender.file=org.apache.log4j.DailyRollingFileAppender log4j.appender.

Log4j日誌輸出詳細

日誌論     在應用程式中輸出日誌有有三個目的: (1)監視程式碼中變數的變化情況,把資料週期性地記錄到檔案中供其他應用進行統計分析工作。 (2)跟蹤程式碼執行進軌跡,作為日後審計的依據。 (3)擔當整合開發環境中的偵錯程式,向檔案或控制檯列印程式碼的除錯資訊。   Ap

JAVA中使用log4j及slf4j進行日誌輸出的方法

cto 所在 inf 官方 pat etl 註意 actor 結果   JAVA中輸出日誌比較常用的是log4j,這裏講下log4j的配置和使用方法,以及slf4j的使用。 一、下載log4j的架包,並導入項目中,如下: 二、創建log4j.prope

(轉)log4j(五)——如何控制不同目的地的日誌輸出

arc config scribe 原則 log4j min logging 主機 我們 一:測試環境與log4j(一)——為什麽要使用log4j?一樣,這裏不再重述 1 老規矩,先來個栗子,然後再聊聊感受 package test.l

log4j配置輸出到多個日誌文件

基準 方式 ref err logfile otl sni targe file 通常我們項目裏,有一些重要的日誌想單獨的輸出到指定的文件,而不是全總輸出到系統的日誌文件中。那麽我們log4j為我們提供了這種功能,以下我們來一步一步看是怎麽做的。這裏以pro

log4j(五)——如何控制不同目的地的日誌輸出

主函數 exc not 文件復制 ron rst it is target sunday 一、測試環境   與log4j(一)——為什麽要使用log4j?一樣,這裏不再重述 二、老規矩,先來個例子,然後再聊聊感受 package com.sc.log4j; impo

log4j配置輸出到多個日誌文件(轉)

兩種模式 簡單 mylog 效果 evel ast mar 輸出 rop 參考資料:http://logging.apache.org/log4j/1.2/manual.html 通常我們項目裏,有一些重要的日誌想單獨的輸出到指定的文件,而不是全總輸出到系統的日誌文件中。那

Mybatis用log4j輸出日誌,輸出sql到控制臺

信息 配置 style rac sage pre SQ back rop log4jar包+log4j.properties百度雲下載地址永久有效: https://pan.baidu.com/s/15WZ-lcBPgFa-a6lkTVVvYw 1 導入jar包(直接復制j

log4j日誌輸出的問題

今天伺服器上報錯,想先去看一下日誌進行排查,結果發現日誌很久都沒有輸出過了。從上午排查到下午,剛剛解決,因此記錄一下,但現在也只是知其然,並不知其所以然,所以如果大家有什麼想法請在下方評論。 先說一下環境,伺服器是linux,專案是執行在tomcat下的Spring專案,日誌用