[Java]log4j 寫 SQL Server 數(shù)據(jù)庫日志的統(tǒng)一寫法
編寫者
|
日期
|
關(guān)鍵詞
|
鄭昀 @ultrapower
|
2005-7-19
|
Java log4j sqlserver
|
?
SQL Server 2000 Driver for JDBC Service Pack 3
的下載
之前需要注意一點, sql server 同樣必須打上了 sp3 的補丁,然后才能與 jdbc for sqlserver sp3 連接。如果是 "Error establishing socket" 錯誤 , 很有可能是要在 sql 上打 sp3 補丁。
下面是對運行 log4j 寫 MS SQL Server 2000 SP3 日志的計算機的要求:
-
?
SQL Server 2000 Driver for JDBC Service Pack 3
。
您可以從以下位置下載并安裝適應(yīng)于
SQLServer SP3
的
jdbc
版本:
瀏覽
如果只是 log4j 寫 sql server ,我們只需要下載這個包中的 mssqlserver.tar
即可,不必安裝 jdbc :
下載信息為:
l ???????? Download files belowQuick InfoVersion: ? 2.2.0040
l ???????? Date Published: ? 7/6/2004
l ???????? Language: ? English
l ???????? Download Size: ? 2883 KB*
得到
jar
包
從 mssqlserver.tar 解壓縮出:
l ???????? msbase.jar
l ???????? msutil.jar
l ???????? mssqlserver.jar
如果是做基于 Tomcat 的 web 應(yīng)用,請放在 tomcat 的 common\lib 文件夾下。并讓你的工程加入對它們的引用。
數(shù)據(jù)庫日志表的準(zhǔn)備
在數(shù)據(jù)庫中準(zhǔn)備一個這樣的表, jws_log :
生成腳本:
|
CREATE TABLE [dbo].[jws_log] (
??? [nId] [int] IDENTITY (1, 1) NOT NULL ,
??? [dtDate] [datetime] NOT NULL ,
??? [sThread] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
??? [sLevel] [varchar] (200) COLLATE Chinese_PRC_CI_AS NOT NULL ,
??? [sLogger] [varchar] (200) COLLATE Chinese_PRC_CI_AS NOT NULL ,
??? [sMessage] [varchar] (2000) COLLATE Chinese_PRC_CI_AS NOT NULL ,
??? [sException] [varchar] (4000) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
?
ALTER TABLE [dbo].[jws_log] WITH NOCHECK ADD
??? CONSTRAINT [PK_jws_log] PRIMARY KEY ? CLUSTERED
??? (
??????? [nId]
??? ) ? ON [PRIMARY]
GO
|
其中, sLevel 字段代表日志的級別; sLogger 字段代表日志是由哪一個類或者文件產(chǎn)生的,如
“ iNotes.Default.Page_Load(c:\mailsource\default.aspx.cs:269) ”; sMessage 字段代表日志的內(nèi)容。
工程中
Log4J
的配置
對工程的屬性文件,需要如此配置:
? 配置:
|
log4j.rootLogger=DEBUG,CONSOLE,DATABASE
log4j.addivity.org.apache=true
########################
# JDBC Appender
#######################
log4j.appender.DATABASE.Threshold=INFO
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
#log4j.appender.DATABASE.BufferSize=10
log4j.appender.DATABASE.URL=jdbc:microsoft:sqlserver://192.168.1.111:1433;DatabaseName=ultra_domino
log4j.appender.DATABASE.driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
log4j.appender.DATABASE.user=sa
log4j.appender.DATABASE.password=
log4j.appender.DATABASE.sql=INSERT INTO wap_mail_jws_log ? VALUES ('%d{yyyy-MM-dd HH:mm:ss}', '%t', '%p', '%l', '%m', '')
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
|
? ?????
下面我們對“ %d %t %p %l %m %n ”一一講解:
l ???????? %d 輸出日志時間點的日期或時間,默認(rèn)格式為 ISO8601 ,也可以在其后指定格式,比如: %d{yyyy-MM-dd HH:mm:ss} ,輸出類似: 2005-7-19 17:49:27 ,剛好適合插入 SQLServer ;
l ???????? %t ? 產(chǎn)生該日志事件的線程名 ;
l ???????? %p 日志的 log_level ,如 DEBUG 、 WARN 或者 INFO ;
l ???????? %c ? 輸出所屬的類目,通常就是所在類的全名 ,如“ iNotes.Default ”;
l ???????? %m 日志的內(nèi)容;
l ???????? %l ? 輸出日志事件的發(fā)生位置,包括類目名、發(fā)生的線程,以及在代碼中的行數(shù)。如 write2database.main(write2database.java:33) ;
l ???????? %n ? 輸出一個回車換行符, Windows 平臺為“ \r\n ”, Unix 平臺為“ \n ”
工程中調(diào)用
Log4J
工程中的寫法:
? 代碼:
|
import sun.jdbc.odbc.*;
import java.sql.*;
?
import org.apache.log4j.Category;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.jdbc.*;
?
/*
??? add for log4j: class Logger is the central class in the log4j package.
??? we can do most logging operations by Logger except configuration.
??? getLogger(...): retrieve a logger by name, if not then create for it.
??? */
??? static Logger logger = Logger.getLogger
??????????? ( write2database.class.getName () ) ;
???????
/*
??????? add for log4j: class BasicConfigurator can quickly configure the package.
??????? print the information to console.
??????? */
??????? PropertyConfigurator.configure ( "log4j2database.properties" ) ;
???????
??????? logger.info ( "just test" ) ;
|
?
?????? 運行起來,你就會看到有這樣的 sql 語句被執(zhí)行了:
?????? INSERT INTO jws_log ? VALUES ('2005-07-19 17:48:50', 'main', 'INFO', 'write2database.main(write2database.java:33)', 'just test', '')
?
編寫者
|
日期
|
關(guān)鍵詞
|
鄭昀 @ultrapower
|
2005-7-19
|
Java log4j sqlserver
|
?
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=429289
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
