如何配置日志（log4j）?
李小翔
2013-12-03 14:14

内容列表

grails 使用 log4j 作为日志组件，
安装了 BroToolkit 后，所有日志会输出到 “logs/工程名_out.log” 和 “logs/工程名_err.log” （stacktrace日志）中，每个日志的文件大小限制为20M，超出限制后自动备份，其中 out 日志最多 200 个备份、err 日志最多 100 个备份。此外，默认配置了一些包的日志等级，如 bropen、grails、org.hibernate 等。
安装了 BroFramework 后，每条日志输出中，会自动记录当前用户名和IP地址，便于分析。
如果默认配置无法满足日志要求的话，可以在工程的 Config.groovy 中进行个性设置。
扩展默认设置，添加日志级别规则
// 注意这里是 log4j.Xxxx
log4j.app = { 
   // 启动时打印 ehcache 的配置文件信息
    debug ’grails.plugin.cache.ehcache.EhcacheConfigLoader’
   
   // 打印超时任务的trace日志
    trace ’grails.app.jobs.bropen.bpm.ExecuteTimeoutTaskJob’
} 
覆盖 appenders
log4j.app = { 
    String appName = delegate.config.grails.project.groupId
    appenders { 
       // 每个日志设为最大 100M，其他配置和默认配置保持一致
        console name:”stdout”, layout:pattern(conversionPattern: ’%d{ HH:mm:ss,SSS}  [%x] [%t] [%p %c] - %m%n’)
        rollingFile name:”R”, file:”logs/${ appName} _out.log”, maxFileSize:’100MB’, maxBackupIndex:’200’, layout:pattern(conversionPattern:’[%x] %d [%r] [%t] [%p %c] - %m%n’)
        rollingFile name:”stacktrace”, file:”logs/${ appName} _err.log”, maxFileSize:’100MB’, maxBackupIndex:’100’, layout:pattern(conversionPattern:’[%x] %d [%r] [%t] [%p %c] - %m%n’)
   } 
} 
完全覆盖默认设置
log4j = { 
   ....
} 
// 或者 log4j.default = { ....} 
系统运行过程中动态设置日志级别
目前暂时没有提供界面设置方式，但是可以用管理员登录后，在开发者工具的调试控制台中动态设置日志级别，如执行下面的代码：
// 打印 Hibernate 的 sql
org.apache.log4j.Logger.getLogger(”org.hibernate.SQL”).level = org.apache.log4j.Level.DEBUG;