如何调试 Grails 中发送的参数

发布于 2024-11-09 03:26:57 字数 1052 浏览 0 评论 0原文

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'

Grails is so nice to append the parameters sent to console output in the case of an error:

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:
...

But how can I tell it to always show me which parameters are sent (like in Rails, for example)?

My current log4j configuration looks as follows:

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'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

只怪假的太真实 2024-11-16 03:26:57

我不相信 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 闭包

I don't believe Grails itself supports logging the request parameters for each request. However, you can easily implement this yourself in a filter:

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"
      }
    }
  }
} 

Remember to enable debug logging for this filter in `Config.groovy by adding

debug com.example

to the log4j closure

紫竹語嫣☆ 2024-11-16 03:26:57

您可能希望从 org.codehaus.groovy.grails.web 获取更多输出,因此将其设置为较低级别(debugtrace

You probably want to get more output from org.codehaus.groovy.grails.web so set that one to a lower level (debug or trace)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文