分类: Java
2009-12-21 15:30:20
Grails使用通常的配置机制来配置底层的log4j日志系统。为了配置日志系统,必须要修改grails-app/config目录下的Config.groovy文件。这个文件允许为development、test和production环境指定不同的日志配置。Grails负责处理这个文件来在web-app/WEB-INF/classes目录下产生适当的log4j.properties文件。
一个典型的Grails的log4j的配置例子如下:
log4j {
appender.stdout = "org.apache.log4j.ConsoleAppender"
appender.'stdout.layout'="org.apache.log4j.PatternLayout"
rootLogger="error,stdout"
logger {
grails="info,stdout"
org {
grails.spring="info,stdout"
codehaus.groovy.grails.web="info,stdout"
codehaus.groovy.grails.commons="info,stdout"
…
}
}
}
如果习惯于使用标准的属性文件的格式进行配置,可以使用Groovy的多行字符串进行设置,如下:
log4j = '''
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# ...remaining configuration
'''
一些有用的日志(logger):
org.codehaus.groovy.grails.commons
- 记录核心信息,如文件加载等。org.codehaus.groovy.grails.web
- 记录Grail web请求的处理org.codehaus.groovy.grails.web.mapping
- 记录URL 映射的 debuggingorg.codehaus.groovy.grails.plugins
- 记录插件的活动org.springframework
- 记录Spring的信息org.hibernate
- 记录Hibernate的信息当异常产生时,Java和Groovy会产生许多无用的内部的异常信息。Grails会过滤这些信息。
当异常产生时,全部的信息总是全部写入到名为StackTrace的日志器中。这些信息保存在名为
stacktrace.log的文件中。但是你可以通过Config.groovy来改变这种行为。例如:你想把这些信息显示到标准输出,可把下列内容
StackTrace="error,stacktraceLog"
修改成:
StackTrace="error,stdout"
你还可以通过以下命令来完全的禁止这项功能:
grails -Dgrails.full.stacktrace=true run-app
每个应用程序的组成部分都有一个动态的log属性。这包括了domain classes、controllers和标签库等等。以下是使用log属性的例子:
def foo = "bar"
log.debug "The value of foo is $foo"
日志以grails.app.
# Set level for all application artefacts
log4j.logger.grails.app="info, stdout"# Set for a specific controller
log4j.logger.grails.app.controller.YourController="debug, stdout"# Set for a specific domain class
log4j.logger.grails.app.domain.Book="debug, stdout"# Set for a specific taglib
log4j.logger.grails.app.tagLib.FancyAjax="debug, stdout"# Set for all taglibs
log4j.logger.grails.app.tagLib="info, stdout"
一些通常的应用程序组成部分对应的名字:
bootstrap
- For bootstrap classesdataSource
- For data sourcestagLib
- For tag librariesservice
- For service classescontroller
- For controllersdomain
- For domain entities