【问题标题】:grails / gorm / org.hibernate.type at TRACE prints nothingTRACE 的 grails / gorm / org.hibernate.type 什么也不打印
【发布时间】:2010-12-15 14:14:26
【问题描述】:

我无法使用 log4j.xml 配置 org.hibernate.type(记录 hibernate 准备语句中使用的绑定变量),但可以使用 Config.groovy 中的 log4j DSL。

我们需要为不同的环境配置日志记录,而不需要为每个环境构建不同的 WAR,因此如果可能,我们需要使用 log4j.xml 而不是 DSL。

已经放

<logger name="org.hibernate.type">
    <level value="TRACE"/>
    <appender-ref ref="console"/>
</logger>

但绑定不打印。以前他们在 DSL 中做过。

log4j = {
...

跟踪'org.hibernate.type' }

很奇怪,尤其是其他休眠日志可以通过 log4j.xml 控制。

非常感谢任何想法。

顺便说一句,在 Config.groovy 中使用 DSL 被推荐为灵活管理跨环境配置的最佳实践 - 包含配置的编译对象似乎令人惊讶 - 但对 grails 来说是新手。

【问题讨论】:

    标签: hibernate logging grails groovy


    【解决方案1】:

    我建议您为每个服务器使用单独的配置文件。要在服务器的主文件夹中拥有自定义配置文件,请将以下内容放入 config.groovy:

    grails.config.locations = [ "file:${userHome}/customConfig.groovy" ]
    

    然后,在您的 Web 服务器的主文件夹中创建 customConfig.groovy(如果您使用的是 Linux 和 Tomcat,则类似于 vim ~tomcat/customConfig.groovy)并覆盖您想要的任何属性。唯一的障碍是,对于日志记录 DSL,您需要在此处提供整个日志记录块(您不能像使用大多数其他配置设置一样覆盖选定的属性)。

    这样,您只需在配置更改时重新启动 Web 应用程序,而不必为不同的服务器分别构建。

    【讨论】:

      【解决方案2】:

      您可以在 Config.groovy 文件中根据环境配置日志记录

      // set per-environment 
      environments {
          development {
             log4j = {
                ...
             }
          }
          test {
             log4j = {
                ...
             }
          }
      }
      

      【讨论】:

      • 谢谢你 - 这可能是我们最终要做的 - 但是不允许在没有重新编译的情况下更改日志记录级别,这是一个很大的限制。暂时重新启动服务器、提高消息跟踪、队列跟踪、SQL 等的日志级别,然后将级别降低并恢复是很有用的。
      猜你喜欢
      • 2016-06-12
      • 2014-04-24
      • 1970-01-01
      • 2011-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多