grails1.2日志处理

rails的日志是Common-logging + Log4j的组合,日志的配置在Config.groovy中完成。我们同样可以对它使用环境,比方说对于开发环境设置一个日志级别(如debug),对于产品环境则设置另一个(如error)。在运行时,Grails会根据日志配置在web-app/WEB-INF/classes中产生合适的log4j.properties。典型的日志配置如下: log4j = { error 'org.codehaus.groovy.grails.web.servlet', 'org.codehaus.groovy.grails.web.pages' warn 'org.mortbay.log' } 上面的配置针对不同的包设置了不同的日志级别,一般情况下,我们会对Grails自带包或工具包设为error,而对于工程相关的包则是在开发环境下设成debug,在产品环境下设为error。在了解如何进行这样的配置之前,我们先复习一下Log4j的相关概念。Log4j主要由3部分组成: 1.Logger:相当于日志的分类,root为根。所有的logger都继承root的设置。简单理解的话,不妨将类的包结构于Logger划上等号。参考文档中列出了一些Grails常用的Logger,请注意。 上面给出的例子是单独给不同的logger指定了不同的日志级别,如果相同级别的logger很多,一一指定的话就太麻烦了,这时可以通过设置root来完成。设置root有两种方法: 方法1:单独使用(log4j的闭包内) root { debug 'stdout', 'file' additivity = true } 方法2:使用log4j闭包传入的root: log4j = { root -> root.level = org.apache.log4j.Level.DEBUG … } 2.appender:负责日志输出。主要的appender有: jdbc:输出到数据库 console:输出到stdout file:输出到文件 rollingFile:输出到文件,达到预定大小后,文件自动分割 appender的指定也是在log4j闭包中完成的: appenders { rollingFile name:"myAppender", maxFileSize:1024, file:"/tmp/logs/myApp.log" } 使用则是在Logger中指定: root { debug 'myAppender' additivity = true } 3.layout:负责日志输出的格式。主要格式: xml:xml格式 html:html格式 simple:简单文本 pattern:指定输出的模式 layout的指定是在appender中进行的: appenders { console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n') } 接下来,回到我们刚才的问题:“针对开发环境设置debug,针对产品环境设置error”,整个配置如下: log4j = { environments { production { root { error 'stdout' additivity = true } } development { root { debug 'stdout' additivity = true } } test { root { debug 'stdout' additivity = true } } } error 'org.codehaus.groovy.grails.web.servlet', // controllers 'org.codehaus.groovy.grails.web.pages', // GSP 'org.codehaus.groovy.grails.web.sitemesh', // layouts 'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping 'org.codehaus.groovy.grails.web.mapping', // URL mapping 'org.codehaus.groovy.grails.commons', // core / classloading 'org.codehaus.groovy.grails.plugins', // plugins 'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration 'org.springframework', 'org.hibernate', 'net.sf.ehcache.hibernate', 'org.apache', //注意这里这一行和下一行 'net.sf' warn 'org.mortbay.log' } 接下来我们谈谈堆栈的输出。一般情况下,Grails会把完整的堆栈信息输出到stacktrace.log,而只在stdout显示过滤后的内容。但我们也可以改变它: 方法1,在标准输出上输出完整堆栈:error stdout:"StackTrace" 方法2,禁止堆栈过滤:grails -Dgrails.full.stacktrace=true run-app Grails为我们使用日志提供了非常大的便利条件:每个应用部件都会被动态添加一个log属性,因此,在这些部件中可以直接使用log。如:log.debug "The value of foo is $foo"。在配置时,使用约定:grails.app.<artefacttype>.ClassName。主要的名称: bootstrap:启动类 dataSource:数据源 tagLib:标签库 service:服务类 controller:控制器 domain:领域类 配置示例: log4j = { // 所有部件 info "grails.app" // 特定的Controller debug "grails.app.controller.YourController" ... }</artefacttype>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值