第 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