如何配置grails app以将日志,堆栈跟踪和错误写入特定文件

时间:2014-09-26 17:15:20

标签: tomcat grails log4j

我希望我的grails应用程序记录所有调试,堆栈跟踪,未捕获的错误(500s等)以记录到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"
}

1 个答案:

答案 0 :(得分:3)

我将其放在environments块中以确保它仅适用于生产环境。您可以在appenders部分轻松添加文件追加器,Grails文档显示如何将其配置为每天创建新文件的滚动追加器,或者文件达到最大大小等等。&# 39;附加' root级别的appender代替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