第 8 章 软件日志
8.1. 配置
PVM可以使用JDK日志(java.util.logging)或log4j.当第一个信息被记录, PVM日志会根据下面的过程进行选择:
1. 如果一个logging.properties资源被发现在 classpath(使用context classloader)下,然后JDK日志会被使用 这个文件会被用来实现JDK日志。
2. 如果log4j在classpath中找到,然后log4j会被用到。 对log4j的检测会通过检测context classloader中的 org.apache.log4j.LogManager来实现。
3. 如果没找到上面的,会使用JDK日志。
8.2. 目录
PVM类使用它们自己的类名作为日志的目录。
为了对PVM的类在做什么进行基本的激烈, 最好打开debug级别。 trace级别对于这个目的来讲 输出似乎太多了。
8.3. JDK日志
在JDK日志中,debug映射为fine, trace映射为finest. finer级别没有用到。
org.jbpm.pvm.internal.log.LogFormatter是pvm库的一部分, 它可以为日志信息创建一个很好的单行输出。 它也有一个灵活的功能,为每个线程创建一个唯一的标示。 想要配置它,这是一个常用的logging.properties
handlers = java.util.logging.ConsoleHandler java.util.logging.ConsoleHandler.level = FINEST java.util.logging.ConsoleHandler.formatter = org.jbpm.pvm.internal.log.LogFormatter # For example, set the com.xyz.foo logger to only log SEVERE messages: # com.xyz.foo.level = SEVERE .level = SEVERE org.jbpm.level=FINE org.jbpm.tx.level=FINE org.jbpm.pvm.internal.wire.level=FINE |
8.4. 调试持久化
在测试持久化时,下面的日志配置是很有价值的。 目录org.hibernate.SQL显示执行的SQL语句, 目录org.hibernate.type显示查询中 设置的参数值。
org.hibernate.SQL.level=FINEST org.hibernate.type.level=FINEST |
一旦你获得一个失败处理,比如因为一个hibernate异常, 你可能希望把批处理大小设置为0,像这样在hibernate配置里:
hibernate.jdbc.batch_size = 0 |
也是在hibernate配置中,下面的配置允许记录 hibernate输出的SQL的日志细节:
hibernate.show_sql = true hibernate.format_sql = true hibernate.use_sql_comments = true |