我使用的是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:我知道我可以对所有功能启用DEBUG,但是那是我不需要的太多信息,我想看看我的控制器日志记录正在发生什么。
答案 0 :(得分:1)
在这样的类中,记录器以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
包下所有类的日志级别。
注意application
记录器似乎已根据docs被弃用:
还有一个play.api.Logger单例对象,可让您 访问名为应用程序的记录器,但在Play中已弃用 2.7.0及更高版本。您应该声明自己的记录器实例...
如果消息仍未记录,请尝试从异步附加程序更改为同步附加程序,如下所示:
<root level="WARN">
<appender-ref ref="FILE" />
<appender-ref ref="STDOUT" />
</root>