Grails 如何在PCFDev中查看Tomcat日志?

Grails 如何在PCFDev中查看Tomcat日志?,grails,cloud-foundry,Grails,Cloud Foundry,我正在PCFDev中部署一个带有mysql的2.3.5 Grails应用程序。在我的应用程序中点击一些URL,我会得到一个500错误。当我使用cf logs查看日志时,我的示例只看到访问日志。他们没有显示我的踪迹 我怎样才能在日志中看到stacktrace,从而准确地知道是什么导致了错误?通常在Tomcat中部署应用程序时,我会在Tomcat的/logs目录中看到这些日志 这就是我的grails应用程序的config.groovy外观 def catalinaBase = System.prop

我正在PCFDev中部署一个带有mysql的2.3.5 Grails应用程序。在我的应用程序中点击一些URL,我会得到一个500错误。当我使用
cf logs查看日志时,我的示例只看到访问日志。他们没有显示我的踪迹

我怎样才能在日志中看到stacktrace,从而准确地知道是什么导致了错误?通常在Tomcat中部署应用程序时,我会在Tomcat的
/logs
目录中看到这些日志

这就是我的grails应用程序的
config.groovy
外观

def catalinaBase = System.properties.getProperty('catalina.base')
if (!catalinaBase) catalinaBase = '.'   // just in case
def logDirectory = "${catalinaBase}/logs"
        log4j = { root ->
            appenders {
//                console name: 'stdout', layout: pattern(conversionPattern: "%d [%t] %-5p %c %x - %m%n")
                rollingFile name:'stdout', file:"${logDirectory}/my.log".toString(), maxFileSize:'100KB'
                rollingFile name:'stacktrace', file:"${logDirectory}/my_stack.log".toString(), maxFileSize:'100KB'
            }
            warn    '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'
            debug   'com.aerstone.ldap', 'com.aerstone.scanner.helper'
            root.level = org.apache.log4j.Level.INFO
        }
谷歌搜索“cf日志”是第一个结果。它有一节是关于。它说:

您的应用程序必须将日志写入
STDERR
STDOUT
。两者都是典型的缓冲区,在将消息传递给Loggregator之前,应该刷新缓冲区

除了写入目录或文件外,还应考虑将输出发送到<代码> StdOut<<代码>和<代码> STDRR 按

流。 此外,您还可以搜索“cf ssh”,其中解释了如何将ssh连接到应用程序的容器中,并查看其本地文件系统上的内容。

谷歌搜索“cf日志”作为第一个结果。它有一节是关于。它说:

您的应用程序必须将日志写入
STDERR
STDOUT
。两者都是典型的缓冲区,在将消息传递给Loggregator之前,应该刷新缓冲区

除了写入目录或文件外,还应考虑将输出发送到<代码> StdOut<<代码>和<代码> STDRR 按

流。
此外,您还可以搜索“cf ssh”,其中解释了如何将ssh连接到应用程序的容器中,并查看其本地文件系统上的内容。

cf是否提供了grails或spring boot应用程序的建议log4j设置示例?遗憾的是,我不太确定。您几乎做到了。在上面的示例中,您已经注释掉了控制台appender。取消对该文件的注释,并注释掉滚动文件附加器。这会导致你的应用程序登录到STDOUT,当你运行
cf logs
时,就会看到STDOUT。cf是否为grails或spring boot应用程序提供了一个推荐的log4j设置示例?不幸的是,我不确定。你就快到了。在上面的示例中,您已经注释掉了控制台appender。取消对该文件的注释,并注释掉滚动文件附加器。这将导致您的应用程序登录到标准输出,当您运行
cf logs
时,标准输出将可见。