Debugging 如何调试Grails中发送的参数

Debugging 如何调试Grails中发送的参数,debugging,grails,parameters,Debugging,Grails,Parameters,Grails非常适合在出现错误时附加发送到控制台输出的参数: 2011-05-23 12:17:05,173 [http-8080-5] ERROR errors.GrailsExceptionResolver - Exception occurred when processing request: [POST] / - parameters: maps: on maps: on maps: on maps: _isPublic: description: test name: set1

Grails非常适合在出现错误时附加发送到控制台输出的参数:

2011-05-23 12:17:05,173 [http-8080-5] ERROR errors.GrailsExceptionResolver  - Exception occurred when processing request: [POST] / - parameters:
maps: on
maps: on
maps: on
maps: 
_isPublic: 
description: test
name: set1
isPublic: on
Stacktrace follows:
...
但是,我如何告诉它总是显示发送了哪些参数(例如在Rails中)

我当前的
log4j
配置如下所示:

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'

warn   'org.mortbay.log'

您可能希望从
org.codehaus.groovy.grails.web
获得更多的输出,因此将该输出设置为较低级别(
debug
trace

我认为grails本身不支持为每个请求记录请求参数。但是,您可以在过滤器中轻松实现这一点:

package com.example

class MyFilters {

  private static final log = org.apache.commons.logging.LogFactory.getLog(this)

  def filters = {
    paramLogger(controller:'*', action:'*') {
      before = {
        log.debug "request params: $params"
      }
    }
  }
} 
记住在`Config.groovy中通过添加

debug com.example

对于
log4j
closure

两者都不起作用,它们只显示一些URL映射和
GrailsDataBinder
的更多信息,
debug'MyFilters'
是否足以启用它?结果是
debug'grails.app.filter'
也不能起作用。这应该是
debug'grails.app.filters'
。注意复数形式。