log4jdbc資料庫訪問日誌框架使用
log4jdbc官網地址
http://code.google.com/p/log4jdbc/
https://github.com/arthurblake/log4jdbc
當前最新版本是1.2, 支援JDBC3, JDBC4
log4jdbc是在jdbc層的一個日誌框架,可以將佔位符與引數全部合併在一起顯示,方便直接拷貝sql在資料庫客戶端執行
未使用log4jdbc記錄的SQL:
select count(*) from region where id=?
使用 log4jdbc記錄的SQL:
select count(*) from region where id='gz'
log4jdbc特點
-
全面支援JDBC 3和JDBC 4!
-
容易配置,在大多數情況下,你需要做的是改變驅動類名net.sf.log4jdbc.DriverSpy的,並在前面加上“為jdbc:log4jdbc”到你現有的JDBC URL,建立你的日誌記錄類別。
示例:jdbc:log4jdbc:mysql://192.168.0.207:3306/mall
-
自動SQL輸出。這大大提高了許多情況下的可讀性和除錯。
-
可以列印SQL的執行時間,用來除錯SQL的執行效率。
-
生成SQL連線數資訊,以幫助識別連線池或執行緒問題。
-
底層的JDBC驅動程式的相容,使用JDK 1.4以上和SLF4J 1.x
log4jdbc設定的logger
1
2
3
4
5
6
7
|
logger 描述 jdbc.sqlonly 僅記錄SQL。 jdbc.sqltiming 計時統計SQL的執行用時。 jdbc.audit 記錄所有的JDBC呼叫(ResultSet的除外)。Log量非常大,會影響效能,建議關閉。 一般情況下不需要開這個設定,除非追蹤一個特定的JDBC問題。 jdbc.resultset 比audit量更大,包括ResultSet物件,記錄所有的JDBC記錄。建議關閉 jdbc.connection 記錄開啟和關閉連線以及開啟的連線數。用於追蹤連線洩漏問題,非常有用。 |
使用方法
1: 在log4j配置檔案中增加對應的logger
2: 改變驅動類名,
如MYSQL的:jdbc:log4jdbc:mysql://192.168.0.207:3306/mall
如Derby的:jdbc:log4jdbc:derby://localhost:1527//db-derby-10.2.2.0-bin/databases/MyDatabase
log4j配置樣例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
<?xml version= "1.0" encoding= "UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" > <log4j:configuration xmlns:log4j= "http://jakarta.apache.org/log4j/" debug= "false" > <appender name= "CONSOLE" class = "org.apache.log4j.ConsoleAppender" > <layout class = "org.apache.log4j.PatternLayout" > <param name= "conversionPattern" value= "%d %p [%c:%L] - %m%n" /> </layout> <filter class = "org.apache.log4j.varia.LevelRangeFilter" > <param name= "LevelMin" value= "INFO" /> </filter> </appender> <appender name= "sql-appender" class = "org.apache.log4j.RollingFileAppender" > <param name= "File" value= "${log.dir}/logs/sql.log" /> <param name= "MaxBackupIndex" value= "20" /> <param name= "MaxFileSize" value= "20MB" /> <param name= "Append" value= "true" /> <layout class = "org.apache.log4j.PatternLayout" > <param name= "ConversionPattern" value= "%d %p [%c:%L] - %m%n" /> </layout> </appender> <appender name= "sql-timing-appender" class = "org.apache.log4j.FileAppender" > <param name= "File" value= "${log.dir}/logs/sqltiming.log" /> <param name= "MaxBackupIndex" value= "20" /> <param name= "MaxFileSize" value= "20MB" /> <param name= "Append" value= "true" /> <layout class = "org.apache.log4j.PatternLayout" > <param name= "ConversionPattern" value= "%d %p [%c:%L] - %m%n" /> </layout> </appender> <appender name= "jdbc-appender" class = "org.apache.log4j.FileAppender" > <param name= "File" value= "${log.dir}/logs/jdbc.log" /> <param name= "MaxBackupIndex" value= "20" /> <param name= "MaxFileSize" value= "20MB" /> <param name= "Append" value= "true" /> <layout class = "org.apache.log4j.PatternLayout" > <param name= "ConversionPattern" value= "%d %p [%c:%L] - %m%n" /> </layout> </appender> <appender name= "jdbc-connection" class = "org.apache.log4j.FileAppender" > <param name= "File" value= "${log.dir}/logs/connection.log" /> <param name= "MaxBackupIndex" value= "20" /> <param name= "MaxFileSize" value= "20MB" /> <param name= "Append" value= "true" /> <layout class = "org.apache.log4j.PatternLayout" > <param name= "ConversionPattern" value= "%d %p [%c:%L] - %m%n" /> </layout> </appender> <!-- log SQL (pre-execution) plus exceptions caused by SQL --> <logger name= "jdbc.sqlonly" additivity= "false" > <level value= "debug" /> <appender-ref ref= "sql-appender" /> </logger> <!-- log SQL with timing information, post execution --> <logger name= "jdbc.sqltiming" additivity= "false" > <level value= "fatal" /> <appender-ref ref= "sql-timing-appender" /> </logger> <!-- only use the two logs below to trace ALL JDBC information, NOTE: This can be very voluminous! --> <!-- log all jdbc calls except ResultSet calls --> <logger name= "jdbc.audit" additivity= "false" > <level value= "fatal" /> <appender-ref ref= "jdbc-appender" /> </logger> <!-- log the jdbc ResultSet calls --> <logger name= "jdbc.resultset" additivity= "false" > <level value= "fatal" /> <appender-ref ref= "jdbc-appender" /> </logger> <!-- log connection open/close events and dump of all open connection numbers --> <logger name= "jdbc.connection" additivity= "false" > <level value= "fatal" /> <appender-ref ref= "connection-appender" /> </logger> <!-- this log is for internal debugging of log4jdbc, itself --> <!-- debug logging for log4jdbc itself --> <logger name= "log4jdbc.debug" additivity= "false" > <level value= "debug" /> <appender-ref ref= "stdout-appender" /> </logger> <root> <level value= "info" /> <appender-ref ref= "CONSOLE" /> </root> </log4j:configuration> |
程式呼叫示例
1
2
3
4
5
6
7
8
9
10
11
12
|
public class Demo { private static Logger log = LoggerFactory.getLogger(Demo. class ); public static void main(String[] args) throws SQLException { log.info( "開始" ); Connection conn = DBUtils.getConnection(); conn.createStatement().execute( "select count(*) from xbm_region" ); JdbcUtils.executeQuery( "select count(*) from xbm_region where id=?" , "xxx" ); log.info( "完成" ); } }
來源:http://my.oschina.net/cloudcoder/blog/420510?fromerr=BV87XkL5
|
相關文章
- 使用Fluentd + Elasticsearch收集訪問日誌Elasticsearch
- log4jdbc記錄全部SQL日誌JDBCSQL
- 使用外部表訪問監聽日誌
- Apche日誌系列(1):訪問日誌(轉)
- 使用LOGMNR檢視資料庫日誌資料庫
- 使用外部表訪問警告日誌檔案
- jmeter 使用 ssh 方式訪問資料庫JMeter資料庫
- 如何使用MySQL資料庫來分析Apache日誌?MySql資料庫Apache
- 使用apache日誌進行訪問ip的排序Apache排序
- FeignClient配置日誌訪問client
- 使用 @NoRepositoryBean 簡化資料庫訪問Bean資料庫
- JDBC資料庫訪問JDBC資料庫
- Mysql資料庫之Binlog日誌使用總結MySql資料庫
- Linux下使用GoAccess監控Nginx訪問日誌LinuxGoNginx
- oracle資料庫mmnl日誌很大Oracle資料庫
- 分析資料庫日誌(LogMiner)資料庫
- 清除SQL Server資料庫日誌SQLServer資料庫
- Tomcat訪問日誌淺析Tomcat
- nginx自動切割訪問日誌Nginx
- Nginx 訪問日誌格式設定Nginx
- 使用speedment以Java 8 Stream訪問資料庫Java資料庫
- 使用PowerBuilder同時訪問多個資料庫UI資料庫
- Oracle資料庫訪問控制Oracle資料庫
- 異構資料庫訪問資料庫
- 使用Log4j輸出日誌至資料庫資料庫
- 日誌服務之分析使用者訪問行為
- 萬字長文帶你瞭解Java日誌框架使用Java日誌框架Java框架
- jboss訪問資料庫的問題資料庫
- 瀚高資料庫日誌挖掘方法資料庫
- 資料庫映象和日誌傳送資料庫
- SQL Server 檢視資料庫日誌SQLServer資料庫
- 【YashanDB知識庫】windows配置ODBC跟蹤日誌, 使用日誌定位問題Windows
- Nginx 訪問日誌實時解析 ngxtopNginx
- AWK應用之統計訪問日誌
- MySQL資料庫中的日誌檔案---(1)錯誤日誌MySql資料庫
- SQLServer資料庫日誌清理 清除sqlserver2005日誌SQLServer資料庫
- [開源] .Net 使用 ORM 訪問 華為GaussDB資料庫ORM資料庫
- Spring框架訪問資料庫的兩種方式的小案例Spring框架資料庫