如何在PCFDev中查看Tomcat日志?

时间:2016-10-10 15:06:52

标签: grails cloudfoundry pivotal-cloud-foundry

我在PCFDev中使用mysql部署2.3.5 Grails应用程序。在我的应用程序中点击一些URL我得到500错误。当我使用cf logs my-sample查看日志时,我只看到访问日志。他们没有显示我的堆栈跟踪。

如何在日志中实际看到堆栈跟踪,以便确切知道导致错误的原因?通常在Tomcat中部署应用程序时,我会在Tomcat的/logs目录中看到这些日志。

这就是我的config.groovy对于我的grails应用程序的样子。

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
        }

1 个答案:

答案 0 :(得分:2)

谷歌搜索“cf logs”会显示http://docs.pivotal.io/pivotalcf/1-8/devguide/deploy-apps/streaming-logs.html作为第一个结果。它有"Writing to the Log from Your App"部分。它说:

  

您的应用必须将日志写入STDERRSTDOUT。两者通常都是缓冲的,您应该在将消息传递给Loggregator之前刷新缓冲区。

除了写入目录或文件外,您还应考虑根据Twelve-Factor App treatment of logs将该输出发送到STDOUTSTDERR流。

此外,您可以搜索“cf ssh”,其中提供this result,说明如何通过SSH连接到应用程序的容器并查看其本地文件系统上的内容。