共同點(diǎn):
1、Log4j和JDBMonitor都有很強(qiáng)的可擴(kuò)展性,例如Log4j可以寫自己的Appender,JDBMonitor可以寫自己的DBListener。
2、Log4j和JDBMonitor都很容易配置。當(dāng)然Log4j配置文件相對復(fù)雜。
不同點(diǎn):
1、Log4j能為各種事件進(jìn)行日志輸出,比如關(guān)鍵操作,運(yùn)行中的變量值、數(shù)據(jù)庫語句日志等。而JDBMonitor只能記錄數(shù)據(jù)庫sql語句操作記錄。所以說Log4j應(yīng)用范圍更廣,如果您需要記錄非數(shù)據(jù)庫語句日志就要使用Log4j,JDBMonitor則無能為力。
2、Log4j配置比較靈活,比如可以配置什么等級的日志被記錄,記錄的格式是什么樣的,日志文件到多大的時候被轉(zhuǎn)儲;而JDBMonitor則相對較不靈活,輸出格式比較單一、而且無法指定那些日志可以被忽略。
3、Log4j是侵入式的,所有的日志操作都是寫在業(yè)務(wù)代碼之中的,缺點(diǎn)是很明顯的,這導(dǎo)致業(yè)務(wù)代碼中摻雜大量的日志輸出代碼,降低了代碼的可讀性,而且一旦想去掉日志功能以后必須逐個刪除代碼,加大了工作量和風(fēng)險。JDBMonitor是非侵入式的,它采用代理模式攔截對數(shù)據(jù)庫的調(diào)用,然后對進(jìn)行日志記錄,業(yè)務(wù)系統(tǒng)中根本不用摻雜日志代碼。只要修改JDBC連接字符串即可,如果想去掉日志功能,只要將JDBC連接字符串修改回去即可。
4、Log4j采用的日志記錄實(shí)現(xiàn)方式會對程序的運(yùn)行速度有一定影響,在日志比較多的時候,甚至?xí)?dǎo)致整個程序慢到無法忍受。而JDBMonitor則另起一個線程來記錄SQL,所以它幾乎不會對程序運(yùn)行速度有任何影響。
5、Log4j的Appender不適合進(jìn)行調(diào)試開發(fā),調(diào)試開發(fā)只有那個控制臺Appender可以用,但是在大數(shù)據(jù)量的時候整個屏幕狂刷不止,根本看不清,而且很多操作系統(tǒng)的控制臺(比如windows的)都有緩沖區(qū)大小限制,所以很容易造成想看的sql日志被沖掉看不到了。而Log4j的不僅有與Log4j類似的控制臺Appender可以用,而且有一個客戶端SocketSwingClient可以用,這個客戶端類似SQLServer的事件監(jiān)聽器,容納的日志量相當(dāng)大,而且可以自由控制日志的上下滾動。