玩!框架日志仅适用于系统级别

问题描述 投票:1回答:1

我目前正在玩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)
java scala logging playframework slf4j
1个回答
0
投票

尝试将根记录器级别从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" />
© www.soinside.com 2019 - 2024. All rights reserved.