2016-10-10 63 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'時,它會顯示出來。 –