2016-10-10 77 views
0

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

我怎样才能真正看到日志中的堆栈跟踪,以便我确切地知道是什么导致了错误?通常在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 
     } 

回答

2

使用谷歌搜索“cf logs”作为第一个结果带来http://docs.pivotal.io/pivotalcf/1-8/devguide/deploy-apps/streaming-logs.html。它有一个关于​​的部分。它说:

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

除了写入目录或文件,你应该考虑也是输出发送给STDOUTSTDERR流为每Twelve-Factor App treatment of logs

此外,您可以搜索“cf ssh”,它给出this result,解释如何通过SSH访问应用程序的容器并查看其本地文件系统中的内容。

+0

CF是否为grails或spring启动应用程序提供了推荐的log4j设置示例? – Anthony

+0

不幸的是,我不确定。 –

+0

你快到了。您的控制台appender在上面的示例中注释掉了。取消注释并注释滚动文件appender。这应该会导致你的应用程序登录到STDOUT,当你运行'cf logs'时,它会显示出来。 –