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;