我目前正在玩Play!框架和日志似乎只适用于游戏!只是对于那些具有LOGGER初始化的类不起作用。
这是logback.xml
<!-- 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="INFO" />
<!-- Off these ones as they are annoying, and anyway we manage configuration ourselves -->
<logger name="com.avaje.ebean.config.PropertyMapLoader" level="OFF" />
<logger name="com.avaje.ebeaninternal.server.core.XmlConfigLoader" level="OFF" />
<logger name="com.avaje.ebeaninternal.server.lib.BackgroundThread" level="OFF" />
<logger name="com.gargoylesoftware.htmlunit.javascript" level="OFF" />
<root level="WARN">
<!--<appender-ref ref="ASYNCFILE" />-->
<appender-ref ref="ASYNCSTDOUT" />
</root>
</configuration>
这是我使用日志记录机制配置的示例类。每次我尝试执行此代码。没有日志出来
package controllers.search
import javax.inject.{Inject, Singleton}
import play.api.Logger
@Singleton
class SearchController @Inject()(cc: ControllerComponents)
extends AbstractController(cc) {
protected val LOGGER: Logger = Logger(this.getClass())
def search(q:String,
card: String,
lat: Option[String],
lng: Option[String]) = Action {
LOGGER.info("Searching "+card+" For "+q+" ")
}
我非常怀疑这是一个依赖问题,因为每次我的应用程序启动它都会向我显示此消息。我假设我的日志配置正确
[info] p.c.s.AkkaHttpServer - Listening for HTTP on /0:0:0:0:0:0:0:0:9000
Server started, use Cmd+P to stop
[info] play.api.Play - Application started (Dev)
尝试将根记录器级别从WARN
更改为INFO
,如此
<root level="INFO">
<appender-ref ref="ASYNCSTDOUT" />
</root>
所有记录器inherit from root记录器和根据Logback docs:
如果给定的记录器没有分配级别,那么它将从具有指定级别的最近祖先继承一个级别。
这里controllers.search.SearchController
从root继承了WARN
级别,因此没有记录LOGGER.info
消息。
我们还可以将根记录器保持在WARN
并改变SearchController
的级别,如下所示:
<logger name="controllers.search.SearchController" level="INFO" />
<root level="WARN">
<appender-ref ref="ASYNCSTDOUT" />
</root>
同样,play
日志可见的原因是由于已经存在以下配置
<logger name="play" level="INFO" />