Logj ()是一个开源代码的项目(Open source project)它使开发人员能最大限度的灵活控制程序调试信息的输出这一点它是通过额外的配置文件实现的
JDBMonitor()是一个开源项目使用它开发者可以很轻松为系统增加数据库执行日志功能它使用十分方便您所需要做的唯一事情就是在您系统的JDBC连接字符串前增加类似于 listenerconfig=/configxml:url= 的字符即可不用写任何代码使用 JDBMonitor您可以把数据库执行情况记录通过各种方式记录下来比如打印到控制台输出到文件或者通过socket传送给远程客户端
共同点
Logj和JDBMonitor都有很强的可扩展性例如Logj可以写自己的AppenderJDBMonitor可以写自己的DBListener
Logj和JDBMonitor都很容易配置当然Logj配置文件相对复杂
不同点
Logj能为各种事件进行日志输出比如关键操作运行中的变量值数据库语句日志等而JDBMonitor只能记录数据库sql语句操作记录所以说Logj应用范围更广如果您需要记录非数据库语句日志就要使用LogjJDBMonitor则无能为力
Logj配置比较灵活比如可以配置什么等级的日志被记录记录的格式是什么样的日志文件到多大的时候被转储而JDBMonitor则相对较不灵活输出格式比较单一而且无法指定那些日志可以被忽略
Logj是侵入式的所有的日志操作都是写在业务代码之中的缺点是很明显的这导致业务代码中掺杂大量的日志输出代码降低了代码的可读性而且一旦想去掉日志功能以后必须逐个删除代码加大了工作量和风险JDBMonitor是非侵入式的它采用代理模式拦截对数据库的调用然后对进行日志记录业务系统中根本不用掺杂日志代码只要修改JDBC连接字符串即可如果想去掉日志功能只要将JDBC连接字符串修改回去即可
Logj采用的日志记录实现方式会对程序的运行速度有一定影响在日志比较多的时候甚至会导致整个程序慢到无法忍受而JDBMonitor则另起一个线程来记录SQL所以它几乎不会对程序运行速度有任何影响
Logj的Appender不适合进行调试开发调试开发只有那个控制台Appender可以用但是在大数据量的时候整个屏幕狂刷不止根本看不清而且很多操作系统的控制台(比如windows的)都有缓沖区大小限制所以很容易造成想看的sql日志被沖掉看不到了而Logj的不仅有与Logj类似的控制台Appender可以用而且有一个客户端SocketSwingClient可以用这个客户端类似SQLServer的事件监听器容纳的日志量相当大而且可以自由控制日志的上下滚动