【问题标题】:Play framework logger not picking format after packaging打包后播放框架记录器不选择格式
【发布时间】:2014-08-21 18:02:31
【问题描述】:

我已使用conf 文件夹中的logger.xml 文件对播放生成的日志进行格式化,以获得所需的格式。在我的本地环境中,当我使用play ~runplay -Dlogger.resource=logger.xml 之类的正常播放命令时开始。但是当我使用play dist 打包并使用命令sudo ./start -Dlogger.resource=logger.xml 启动该过程时,它会打印没有任何格式的默认日志。

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>%d{HH:mm:ss.SSS} [%level] %class:%method  %msg%n </pattern>
     </encoder>
   </appender>

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%level] %class:%method  %msg%n </pattern>
    </encoder>
  </appender>

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

  <logger name="application" level="debug" additivity="false">
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="FILE"/>
  </logger>

</configuration>

【问题讨论】:

    标签: xml logging playframework log4j logback


    【解决方案1】:

    您似乎正在使用 Play 2.0.x - 2.1.x,因为您使用的是由 play stageplay dist 生成的 start 脚本。 根据this section in the docs 并假设您的logger.xml 在您的conf 目录中,那么建议的文件正确配置将是:

    sudo ./start -Dlogger.resource=logger.xml
    

    然而,事实证明,如果你将 Logback 配置文件命名为 logger.xml,那么 Play 似乎会从类路径中选择默认的 logger.xml 配置文件,而 不是你的。这可能就是为什么文档中配置文件的名称称为prod-logger.xml 而不仅仅是logger.xml,但是没有明确解释。

    因此,将您的 logger.xml 文件重命名为其他名称。例如test-logger.xml,然后以下内容将正确选择您的 Logback 配置:

    sudo ./start -Dlogger.resource=test-logger.xml
    

    【讨论】:

    • 我正在使用 play 2.1.4,也尝试过,但得到了相同的结果。
    • 使用此路径会导致找不到文件异常。
    • 我在一个测试项目中进行了尝试,并更新了答案以反映我的发现。
    猜你喜欢
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    • 1970-01-01
    • 2017-05-29
    • 2015-07-06
    • 1970-01-01
    相关资源
    最近更新 更多