2012-07-05 58 views
1

當我將Play 2應用程序部署到Heroku時,可以從'heroku日誌'中看到以下日誌。在heroku打印應用程序日誌上播放2.0應用程序

2012-07-05T10:13:08+00:00 app[web.1]: Play server process ID is 3 
2012-07-05T10:13:08+00:00 app[web.1]: SLF4J: Class path contains multiple SLF4J bindings. 
2012-07-05T10:13:08+00:00 app[web.1]: SLF4J: Found binding in [jar:file:/app/target/staged/slf4j-log4j12-1.6.3.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
2012-07-05T10:13:08+00:00 app[web.1]: SLF4J: Found binding in [jar:file:/app/target/staged/logback-classic-1.0.0.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
2012-07-05T10:13:08+00:00 app[web.1]: SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 
2012-07-05T10:13:09+00:00 app[web.1]: log4j:WARN No appenders could be found for logger (com.jolbox.bonecp.BoneCPDataSource). 
2012-07-05T10:13:09+00:00 app[web.1]: log4j:WARN Please initialize the log4j system properly. 
2012-07-05T10:13:09+00:00 app[web.1]: log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 

當我試圖從Play應用程序打印日誌時,我無法從heroku日誌輸出中獲取它。這是我的Play日誌配置。

# Logger used by the framework: 
logger.play=INFO 

# Logger provided to your application: 
logger.application=DEBUG 

我在玩2 Java類中使用的日誌聲明:

play.Logger.debug("log output......"); 

更新1 這是我做過什麼來解決多個依賴的問題。

("com.jayway.facebooktestjavaapi" % "facebook-test-java-api" % "1.1.5" notTransitive()).exclude("org.slf4j", "slf4j-log4j12") 

更新2 我解決上面的錯誤後,日誌報表仍然不輸出到「Heroku的日誌」。所以我按照這裏(https://github.com/playframework/Play20/wiki/SettingsLogger)設置logger.xml。但它仍然沒有輸出任何東西。

$ vi conf/application.conf 
logger.resource=dev-logger.xml 
db.default.logStatements=true 

$ cat conf/dev-logger.xml 
<configuration> 

    <conversionRule conversionWord="coloredLevel" converterClass="play.api.Logger$ColoredLevel" /> 

    <appender name="FILE" class="ch.qos.logback.core.FileAppender"> 
    <file>${application.home}/logs/application.log</file> 
    <encoder> 
     <pattern>%date - [%level] - from %logger in %thread %n%message%n%xException%n</pattern> 
    </encoder> 
    </appender> 

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <encoder> 
     <pattern>%coloredLevel %logger{15} - %message%n%xException{5}</pattern> 
    </encoder> 
    </appender> 

    <logger name="play" level="TRACE" /> 
    <logger name="application" level="TRACE" /> 

    <root level="DEBUG"> 
    <appender-ref ref="STDOUT" /> 
    <appender-ref ref="FILE" /> 
    </root> 

</configuration> 

更新3 我恢復一切恢復和利用原有應用程序日誌,但仍然沒有輸出。

# Root logger: 
logger.root=DEBUG 

# Logger used by the framework: 
logger.play=DEBUG 

# Logger provided to your application: 
logger.application=DEBUG 

# Logger ebean 
logger.com.jolbox=DEBUG 

回答

3

如果您閱讀Heroku日誌,您會注意到您的日誌系統已損壞。首先,你必須SLF4J的多個實例:

2012-07-05T10:13:08+00:00 app[web.1]: SLF4J: Class path contains multiple SLF4J bindings. 
2012-07-05T10:13:08+00:00 app[web.1]: SLF4J: Found binding in [jar:file:/app/target/staged/slf4j-log4j12-1.6.3.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
2012-07-05T10:13:08+00:00 app[web.1]: SLF4J: Found binding in [jar:file:/app/target/staged/logback-classic-1.0.0.jar!/org/slf4j/impl/StaticLoggerBinder.class] 

其次你沒有定義的任何追加程序,這意味着你的日誌消息不會被任何地方打印:

2012-07-05T10:13:09+00:00 app[web.1]: log4j:WARN No appenders could be found for logger (com.jolbox.bonecp.BoneCPDataSource). 
2012-07-05T10:13:09+00:00 app[web.1]: log4j:WARN Please initialize the log4j system properly. 

固定的第一個問題也可能解決第二個。否則,請修復第一個問題(SLF4J),然後如果使用自定義日誌記錄配置,請確認它已正確設置。

編輯上更新: 請刪除您的自定義'logger.xml'並重新上傳。它應該工作,這將指向你的'logger.xml'作爲罪魁禍首(如果你沒有改變任何其他日誌配置)。我在Heroku中使用Play的默認日誌記錄,它工作正常,所以它應該適合你。

如果沒有,那麼我肯定你已經對日誌配置做了一些其他更改,或者應用程序中有一些其他日誌配置會停止日誌。你應該找到並恢復。

編輯要求:

我的配置是默認的,正如我所說:

# Root logger: 
logger.root=ERROR 

# Logger used by the framework: 
logger.play=INFO 

# Logger provided to your application: 
logger.application=DEBUG 

沒有logger.xml,沒有別的。有用。如果遇到問題,可能是因爲您在其他地方覆蓋配置,請檢查Heroku顯示的日誌中所使用的所有jar或其他任何可能暗示該區域出現錯誤的衝突。

+0

對不起,我不應該這麼快結束。即使錯誤信息消失了,我仍然看不到來自'heroku日誌'的消息。我也嘗試'heroku bash',但仍然沒有日誌文件夾下的應用程序。 – angelokh 2012-07-09 08:14:34

+0

順便說一句,我也按照這個鏈接https://github.com/playframework/Play20/wiki/SettingsLogger設置logger.xml,但仍然沒有日誌輸出。 – angelokh 2012-07-09 08:15:35

+0

@angelokh查看更新的答案 – 2012-07-09 11:48:24