2

我在 Scala 2.12.x Play 2.7.x 上,作为我的应用程序控制器的一部分,我正在使用这样的记录器(或等效地通过这样做with play.api.Logging):

val logger = play.api.Logger(this.getClass)

配置conf/logback.xml如下图所示。问题是应用程序控制器的logger.debug(...)语句没有在日志中输出。我假设application设置为DEBUG查看最后一个条目<logger name="application" level="DEBUG" />,但显然有问题,因为 DEBUG 语句没有被输出?

<!-- https://www.playframework.com/documentation/latest/SettingsLogger -->
<configuration>

    <conversionRule conversionWord="coloredLevel" converterClass="play.api.libs.logback.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 - %message%n%xException</pattern>
        </encoder>
    </appender>

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

    <appender name="ASYNCFILE" class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="FILE" />
    </appender>

    <appender name="ASYNCSTDOUT" class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="STDOUT" />
    </appender>

    <logger name="play" level="INFO" />
    <logger name="application" level="DEBUG" />
    <logger name="slick" level="INFO" />
    <logger name="slick.jdbc" level="DEBUG" />

    <root level="WARN">
        <appender-ref ref="ASYNCFILE" />
        <appender-ref ref="ASYNCSTDOUT" />
    </root>

</configuration>

PS:我知道我可以为所有内容启用调试,但是我不需要的信息太多,我想看看我的控制器日志记录发生了什么。

4

1 回答 1

0

play.api.Logger(this.getClass)记录器在这样的类中实例化

package controller

class HomeController extends ... {
  val logger = play.api.Logger(this.getClass)
  logger.debug("msg")  
}

不是application记录器,而是一个不同的记录器,名为

controller.HomeController

因此,要指定其日志级别,请将以下配置添加到logback.xml

<logger name="controllers" level="DEBUG" />

这使得包DEBUG下所有类的日志级别。controllers

Note applicationlogger 似乎根据文档已被弃用:

还有一个 play.api.Logger 单例对象,允许您访问名为应用程序的记录器,但在 Play 2.7.0 及更高版本中不推荐使用它。您应该声明自己的记录器实例...

如果消息仍未记录,请尝试从异步附加程序更改为同步附加程序,如下所示:

<root level="WARN">
  <appender-ref ref="FILE" />
  <appender-ref ref="STDOUT" />
</root>
于 2019-06-10T23:58:05.690 回答