Log4j和JDBMonitor的比較
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的事件監聽器,容納的日誌量相當大,而且可以自由控制日誌的上下滾動。