tomcat - 如何配置 grails 应用程序以将日志、堆栈跟踪和错误写入特定文件

标签 tomcat grails log4j

我希望我的 grails 应用程序记录所有调试、堆栈跟踪、 Uncaught Error (500 秒等),并将其记录到 tomcat 中的特定文件 myapp.log 中。目前一切都被记录到 catalina.out。这是不可取的,因为 Tomcat 实例上可能部署了其他应用程序。

我的配置是这样的。我正在使用 grails 2.2.4

log4j = {
    appenders {
        console name: "stdout", layout: pattern(conversionPattern: "%c{2} %m%n")
    }

    root {
        info "stdout"
    }

    debug "com.myapp.mypackage",
          "grails.app.controllers.com.myapp.mycontrollers"
}

最佳答案

我将它放在 environments block 中以确保它仅适用于生产环境。您可以在 appenders 部分轻松添加文件附加程序,Grails 文档展示了如何将其配置为滚动附加程序以每天创建新文件,或者一旦文件达到最大大小等. 将 appender 附加到 root 级别以代替 console appender:

environments {
   production {
      log4j = {
         appenders {
            console name: "stdout",
                    layout: pattern(conversionPattern: "%c{2} %m%n")

            file name: 'mylog',
                 file: '/var/logs/mylog.log',
                 layout: pattern(conversionPattern: "%c{2} %m%n")
         }

         root {
            info "mylog"
         }

         debug "com.myapp.mypackage",
               "grails.app.controllers.com.myapp.mycontrollers"

      }
   }
}

使用 Log4j DSL 配置日志记录非常令人困惑,但文档解释了很多并提供了很多有用的示例:http://grails.org/doc/latest/guide/conf.html#logging

关于tomcat - 如何配置 grails 应用程序以将日志、堆栈跟踪和错误写入特定文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26064911/

相关文章:

eclipse - 无法在 Eclipse Neon 上安装新软件

tomcat - ords 数据库未映射数据库

java - Tomcat 中的共享 JNI 库 (.so) - UnsatisfiedLinkError

java - 如何在 Tomcat 中为 WebappClassLoader 设置日志记录?

java - Log4j 无法将文件写入 jetty 日志目录

java - Log4j 是一个死项目吗?

java - 使用 "Run on Server"在 eclipse 中使用已配置的服务器在 eclipse 中运行一个 maven 项目

grails - 默认验证器上的自定义验证消息

grails - 如何在帮助类中使用 Grails 服务

grails - 如何获取 Grails 依赖项的来源