我在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
}
答案 0 :(得分:2)
谷歌搜索“cf logs”会显示http://docs.pivotal.io/pivotalcf/1-8/devguide/deploy-apps/streaming-logs.html作为第一个结果。它有"Writing to the Log from Your App"部分。它说:
您的应用必须将日志写入
STDERR
或STDOUT
。两者通常都是缓冲的,您应该在将消息传递给Loggregator之前刷新缓冲区。
除了写入目录或文件外,您还应考虑根据Twelve-Factor App treatment of logs将该输出发送到STDOUT
和STDERR
流。
此外,您可以搜索“cf ssh”,其中提供this result,说明如何通过SSH连接到应用程序的容器并查看其本地文件系统上的内容。