原文:http://www.mastertheboss.com/jboss-performance/jboss-as-7-performance-tuning/page-5
Logging調優
記錄日誌是每一個應用程序的一個重要任務,默認的配置一般只適合開發,但不適用於生產環境。
您切換到生產環境時需要考慮的關鍵要素是:
1. 選擇一個合適的輸出日誌的處理handler。
2. 選擇一個合適的日誌級別,它恰好可以提供給你需要的足夠信息,不多也不少。
3. 選擇一個合適的日誌輸出格式。
鑑於一般考慮,日誌的處理handler,默認配置會啓動控制檯和文件的日誌輸出。雖然這可能在開發環境中是合適的,但在生產環境中使用控制檯日誌輸出將會是一個昂貴的處理過程,導致大量的非緩衝I / O。雖然一些應用程序可能適合控制檯日誌輸出,但大多數應用更適合關閉控制檯日誌輸出,只使用文件輸出的處理handler。
爲了去掉控制檯日誌,你可以簡單地註釋掉其處理handler:
<root-logger> <level name="INFO"/> <handlers> <!-- <handler name="CONSOLE"/> --> <handler name="FILE"/> </handlers> </root-logger> |
下一步是選擇正確的日誌記錄級別。顯然,記錄的日誌越少,發生的I / O就越少,這樣您的整個應用程序的性能會更好。默認配置使用“INFO”級別根記錄器。你可以考慮提高到較高的級別,如“WARN”或(使用細粒度的approach)改變單一的日誌記錄類別(category)。
<logger category="org.hibernate"> <level name="WARN"/> </logger> |
在這個例子中,我們剛纔提出的org.hibernate包使用“WARN”級別,這將從Hibernate中輸出更加簡潔的日誌信息。
最後,日誌模式(pattern)也會影響您的應用程序的性能。例如,我們使用默認模式格式,如下所示:
<pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/> |
日誌記錄模式的詳細解釋可以在第2章的控制檯處理handler內容中找到。從這個基本格式開始,可儘可能考慮添加標誌%l,可以通過打印出行號和發出日誌的Class來提高你的日誌的詳細程度:
<pattern-formatter pattern="%l %d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/> |
一旦服務器配置被重新加載,控制檯輸出下面的日誌信息:
雖然這些信息在開發時非常有用,但它會導致移植到生產環境中產生很大的性能負擔。
其它可能對你的日誌性能造成負面影響的標誌有%C(打印出調用者的Class信息),%M(它輸出打印日誌的方法)和%F(它輸出發出日誌記錄請求的文件名)。