【问题标题】:play 2.0 application on heroku print application logs在 heroku 打印应用程序日志上播放 2.0 应用程序
【发布时间】:2012-07-05 10:24:09
【问题描述】:

当我将 Play 2 应用程序部署到 Heroku 时,我可以从“heroku 日志”中看到以下日志。

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 日志输出中获取它。这是我的播放日志配置。

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

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

我在 Play 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

【问题讨论】:

    标签: heroku playframework-2.0


    【解决方案1】:

    如果您阅读 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,没有别的。有用。如果您遇到问题,可能是您在其他地方覆盖了配置,请检查您使用的任何 jar 或 Heroku 显示的日志中可能暗示该区域存在错误的任何其他冲突。

    【讨论】:

    • 对不起,我不应该这么快下结论。即使错误消息消失了,我仍然没有看到来自“heroku 日志”的消息。我也尝试了“heroku bash”,但应用程序下仍然没有日志文件夹。
    • 顺便说一句,我也按照此链接github.com/playframework/Play20/wiki/SettingsLogger 设置logger.xml,但仍然没有日志输出。
    • 谢谢。你能发布你的配置吗?我不确定我的默认值是否与您的相同。
    • @angelokh 我这里没有,但我使用创建项目时提供的默认 Play 配置。也就是说,没有logger.xml,没有更改application.properties。回到这个,看看它是否有效(它应该)丢弃任何其他冲突。
    • 我试图将其还原(参见更新),但仍然没有在“heroku 日志”中输出。如果您能提供您的 conf 以及您在“heroku 日志”中获得的输出,那就太好了。
    猜你喜欢
    • 2019-04-17
    • 2019-01-03
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 2023-03-30
    相关资源
    最近更新 更多