从 run-app 配置 Grails 访问日志

Posted

技术标签:

【中文标题】从 run-app 配置 Grails 访问日志【英文标题】:Configuring Grails Access Logging from run-app 【发布时间】:2011-01-08 11:42:45 【问题描述】:

由于调用run-app使用了grails中的tomcat-plugin,那么server.xml中grails AccessLogValve不存在时如何修改?

我只需要这个用于开发,因为在生产中我只会将战争部署到 tomcat。

提前致谢

【问题讨论】:

【参考方案1】:

您可以在 scripts/_Events.groovy 中的“ConfigureTomcat”事件的回调中配置它:

import org.apache.catalina.valves.AccessLogValve

eventConfigureTomcat =  tomcat ->
 tomcat.host.addValve new AccessLogValve(
  directory: basedir, prefix: 'localhost_access_log.', pattern: 'common')

【讨论】:

【参考方案2】:

我必须将它包装在开发环境块中,否则我在开发之外遇到可怕的错误

这是我最终的结果,但我仍然不满意,因为

grails run-war -https

不开心

eventConfigureTomcat =  tomcat ->
    if (grailsEnv == "development") 
        tomcat?.host?.addValve new AccessLogValve(
            directory: basedir,
            prefix: 'localhost_access_log.',
            suffix: '.log',
            pattern: 'common')
    

产生这个:

[unzip] Expanding: foo.war into /Users/tak/.grails/1.3.7/projects/foo/war
Running Grails application..
java.lang.NullPointerException: Cannot set property 'hostname' on null object
at org.grails.tomcat.TomcatServer.startSecure(TomcatServer.groovy:273)

悲伤。

【讨论】:

嘿德!!你能成功地进行这场战争吗

以上是关于从 run-app 配置 Grails 访问日志的主要内容,如果未能解决你的问题,请参考以下文章

如何使用命令关闭 grails run-app

grails Grails 单元测试中的应用程序访问

当我使用 run-app 但部署 .war 时,Grails 操作是安全的

如何让 grails run-app 在文件更改时重新编译它们?

为 grails run-app 增加 Xmx 和 Xms

运行 GRAILS run-app 时如何跳过插件更新提示?