Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15466
  • 博文数量: 3
  • 博客积分: 130
  • 博客等级: 入伍新兵
  • 技术积分: 40
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-15 19:22
文章分类

全部博文(3)

文章存档

2009年(3)

我的朋友
最近访客

分类: 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 映射的 debugging
  • org.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..ClassName的方式进行命名。下面是给不同的组成部分配置不同的log的例子:

# 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 classes
  • dataSource - For data sources
  • tagLib - For tag libraries
  • service - For service classes
  • controller - For controllers
  • domain - For domain entities
阅读(1562) | 评论(0) | 转发(0) |
0

上一篇:grails中环境的配置

下一篇:grails中的测试

给主人留下些什么吧!~~