Log4j (http://logging.apache.org/log4j/docs)是一個開源代碼的項目(Open source project),它使開發人員能最大限度的靈活控制程序調試信息的輸出,這一點它是通過額外的配置文件實現的。
JDBMonitor(http://www.cownew.com)是一個開源項目。使用它開發者可以很輕松為系統增加數據庫執行日志功能。它使用十分方便,您所需要做的唯一事情就是在您系統的JDBC連接字符串前增加類似於 "listenerconfig=/config.XML:url=" 的字符即可,不用寫任何代碼。使用 JDBMonitor,您可以把數據庫執行情況記錄通過各種方式記錄下來,比如打印到控制台、輸出到文件或者通過socket傳送給遠程客戶端。
共同點:
1、Log4j和JDBMonitor都有很強的可擴展性,例如Log4j可以寫自己的Appender,JDBMonitor可以寫自己的DBListener。
2、Log4j和JDBMonitor都很容易配置。當然Log4j配置文件相對復雜。
不同點:
1、Log4j能為各種事件進行日志輸出,比如關鍵操作,運行中的變量值、數據庫語句日志等。而JDBMonitor只能記錄數據庫sql語句操作記錄。所以說Log4j應用范圍更廣,如果您需要記錄非數據庫語句日志就要使用Log4j,JDBMonitor則無能為力。
2、Log4j配置比較靈活,比如可以配置什麼等級的日志被記錄,記錄的格式是什麼樣的,日志文件到多大的時候被轉儲;而JDBMonitor則相對較不靈活,輸出格式比較單一、而且無法指定那些日志可以被忽略。
3、Log4j是侵入式的,所有的日志操作都是寫在業務代碼之中的,缺點是很明顯的,這導致業務代碼中摻雜大量的日志輸出代碼,降低了代碼的可讀性,而且一旦想去掉日志功能以後必須逐個刪除代碼,加大了工作量和風險。JDBMonitor是非侵入式的,它采用代理模式攔截對數據庫的調用,然後對進行日志記錄,業務系統中根本不用摻雜日志代碼。只要修改JDBC連接字符串即可,如果想去掉日志功能,只要將JDBC連接字符串修改回去即可。
4、Log4j采用的日志記錄實現方式會對程序的運行速度有一定影響,在日志比較多的時候,甚至會導致整個程序慢到無法忍受。而JDBMonitor則另起一個線程來記錄SQL,所以它幾乎不會對程序運行速度有任何影響。
5、Log4j的Appender不適合進行調試開發,調試開發只有那個控制台Appender可以用,但是在大數據量的時候整個屏幕狂刷不止,根本看不清,而且很多操作系統的控制台(比如Windows的)都有緩沖區大小限制,所以很容易造成想看的sql日志被沖掉看不到了。而Log4j的不僅有與Log4j類似的控制台Appender可以用,而且有一個客戶端SocketSwingClIEnt可以用,這個客戶端類似SQLServer的事件監聽器,容納的日志量相當大,而且可以自由控制日志的上下滾動。