JBoss AS 7性能调优(四)
原文: 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(它输出发出日志记录请求的文件名)。