c3p0使用了一种与jakarta commons-logging很相似的日志类库。日志信息可以传给流行的日志类库log4j,JDK 1.4中推荐的标准日志设备或者System.err。差不多所有的配置都可以在你喜欢的那些高层的日志类库中完成。只有少数几个配置是c3p0的日志所特有的,并且使用默认配置就行了。
和日志相关的配置参数可能在你的c3p0.properties文件里,或者在你CLASSPATH的顶级目录中的mchange-log.properties文件里,也有可能在系统属性里定义。(下面的日志配置参数可能不能在c3p0-config.xml中定义!)。见下面的文本框。
c3p0的日志行为会被一些编译期选项(build-time options)影响。如果编译期选项c3p0.debug被设置成false,所有低于INFO级别的日志信息将会被忽略。编译期选项c3p0.trace能够控制低于INFO级别的日志信息的报告颗粒细度。
目前来讲,c3p0的发行版本的二进制文件都是把debug设置成true,把trace设置成最大值10来进行编译的。不过最终可能会在发行版中把debug设置为false。[就目前来讲,日志级别检查(logging level-checks)对性能的影响是很小的,编译期间对这些信息的控制都相当灵活,你也能够让你的日志类库来控制哪些信息是要被记录的。]
当c3p0启动的时候,那些debug和trace的编译期的值也会随着版本和编译时间被记录。
决定了c3p0的日志信息输出给哪个库。默认是log4j,不然的话会使用jdk1.4的日志API,如果它可用的话。如果log4j和jdk1.4的日志API都不可用,c3p0只会将日志信息反馈给System.err。如果你要直接控制用哪个日志类库,你就要设定以下几个属性中的一个:
[list]
[]com.mchange.v2.log.log4j.Log4jMLog
[]com.mchange.v2.log.jdk14logging.Jdk14Mlog
[*]com.mchange.v2.log.FallbackMLog
[/list]
你也可以将这些属性设置为一个用逗号间隔的列表,来定义列表中的日志库的使用顺序。
com.mchange.v2.log.NameTransformer
默认情况下,c3p0使用一种非常细粒度的日志策略,通常给每个c3p0类都分配一个日志记录器。因为各种原因,一些用户可能更喜欢更少,更加全局的日志记录器。你可以选择每个包一个日志记录器,只需要把com.mchange.v2.log.NameTransformer设置成com.mchange.v2.log.PackageNames就可以了。
高级用户也可以定义自己实现com.mchange.v2.log.NameTransformer接口,然后把它的全限定名设置成com.mchange.v2.log.NameTransformer的值,这样来控制日志记录器的数量或名称和其他日志策略。
com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL
不管是出于选择还是必要性的考虑,如果你使用System.err作为日志记录器的话,你可以用这个参数来决定日志记录的细节。
下面的这些值(从jdk1.4中借鉴)都是可以接受的:
[list]
[]OFF
[]SEVERE
[]WARNING
[]INFO
[]CONFIG
[]FINE
[]FINER
[]FINEST
[*]ALL
[/list]
这个值默认是INFO。
REF:
http://cwiki.ossez.com/pages/viewpage.action?pageId=4719841