log4j
借鑒:http://www.blogjava.net/zJun/archive/2006/06/28/55511.html
Log4j可以控制日志資訊輸送的目的地是控制台、檔案、GUI元件,甚至是套接口伺服器、NT的事件記錄器等;也可以控制每一條日志的輸出格式;
通過定義日志資訊的級别,可以更加細緻地控制日志的生成記錄。
log4j配置檔案的大概格式如下:
#配置根Logger
log4j.rootLogger = [level], appender1, appender2,…
#配置日志資訊輸出目的地Appender1
log4j.appender.appenderName1 = org.apache.log4j.[AppenderType]
log4j.appender.appenderName1.layout = org.apache.log4j.[LayoutType]
log4j.appender.appenderName1.layout.ConversionPattern = [pattern]
log4j.appender.appenderName1.option1 = value1
…
log4j.appender.appenderName1.optionN = valueN
#配置日志資訊輸出目的地Appender2
log4j.appender.appenderName2 = org.apache.log4j.[AppenderType]
log4j.appender.appenderName2.layout = org.apache.log4j.[LayoutType]
log4j.appender.appenderName2.layout.ConversionPattern = [pattern]
log4j.appender.appenderName2.option1 = value1
…
log4j.appender.appenderName2.optionN = valueN
…
[level]
是日志的輸出級别。共包含5個等級。會列印出等于或高于設定等級的日志資訊。
可直接配置跟logeer的日志等級,也可為每個Appender設定不同的日志等級,将不同等級的日志區分開。
FATAL 0
ERROR 3
WARN 4
INFO 6
DEBUG 7
[AppenderType]
指定了日志的輸出目的地。
log4j提供的appender有以下幾種:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(檔案),
org.apache.log4j.DailyRollingFileAppender(每天産生一個日志檔案),
org.apache.log4j.RollingFileAppender(檔案大小到達指定尺寸的時候産生一個新的檔案),
org.apache.log4j.WriterAppender(将日志資訊以流格式發送到任意指定的地方)
[LayoutType]
指定日志的輸出形式。有以下幾種:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以靈活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志資訊的級别和資訊字元串),
org.apache.log4j.TTCCLayout(包含日志産生的時間、線程、類别等等資訊)
常用的配置例子:
### set log levels ###
log4j.rootLogger = DEBUG,console,D,E
### 輸出到控制台 ###
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 輸出到日志檔案 ###
log4j.appender.D = org.apache.log4j.RollingFileAppender ##檔案大小到達指定尺寸的時候産生一個新的檔案
log4j.appender.D.File = ${catalina.home}/mylogs/log.log ##檔案的輸出路徑
log4j.appender.D.MaxFileSize = 10MB ##檔案的最大尺寸
log4j.appender.D.Threshold = DEBUG ##此appender的日志級别
log4j.appender.D.layout = org.apache.log4j.PatternLayout ##表達式指定布局
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 儲存異常資訊到單獨檔案 ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender ##每日生成一個檔案
log4j.appender.E.File = ${catalina.home}/mylogs/error.log ##檔案輸出路徑
log4j.appender.E.Threshold = ERROR ##此appender的級别
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
java代碼中的使用示例:
public class LoggerTest {
private Logger log = Logger.getLogger(LoggerTest.class);
public static void main(String[] args) {
log.debug("調試使用");
log.info("info及以上級别可見");
log.warn("warn及以上級别可見");
try{
//TODO
} catch(Exception e){
log.error("異常時輸出此資訊", e);
}
}
}
log4jdbc
借鑒:http://www.cnblogs.com/xdp-gacl/p/4081848.html
http://www.cnblogs.com/JSONBEAN/p/6363237.html
1、簡介:
log4jdbc是工作在jdbc層的一個日志架構,能夠在不改變原有代碼的情況下,記錄SQL及資料庫連接配接執行資訊。
相對于mybatis,hibernate,spring jdbc等架構将參數值用占位符辨別,參數值與sql代碼分離的缺點。log4jdbc可以完整的列印出可執行的完整sql。
2、依賴
使用log4jdbc需要引入log4jdbc-1.2.jar,以及依賴的相關Jar包log4j-1.2.17.jar、slf4j-api-1.6.0.jar、slf4j-log4j12-1.7.7.jar。
3、配置
在log4jdbc中定義了以下五個日志對象:
jdbc.sqlonly : 記錄系統執行過的sql語句
jdbc.sqltiming : 記錄sql執行的時間,可以分析耗時的sql語句
jdbc.audit : 記錄除了ResultSet外的所有JDBC調用情況。一般不需要。
jdbc.resultset : 記錄傳回結果集資訊。資料太多,一般也不用。可将執行的sql複制到plsql執行。
jdbc.connection : 記錄資料庫連接配接和釋放資訊,可記錄目前的資料庫連接配接數,便于診斷連接配接是否釋放。
如上面log4j部分的“常用的配置例子”,可在log4j.rootLogger下加入如下配置:
#jdbc執行日志配置
log4j.logger.jdbc.sqlonly=INFO
log4j.logger.jdbc.sqltiming=INFO
log4j.logger.jdbc.resultset=OFF ##關閉不列印
log4j.logger.jdbc.audit=OFF ##關閉不列印
log4j.logger.jdbc.connection=ERROR ##隻列印連接配接異常資訊
4、修改jdbc配置
修改驅動和url,如下所示:
jdbc.driverClassName=net.sf.log4jdbc.DriverSpy
jdbc.url=jdbc:log4jdbc:oracle:thin:@localhost:1521:orcl
jdbc.username=scort
jdbc.password=tiger