Играть! Framework Logging работает только на уровне системы - PullRequest
1 голос
/ 27 апреля 2019

Я сейчас работаю с Play!Framework и кажется, что регистрация работает только для игры!только для классов, в которых taht имеет инициализацию 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)

1 Ответ

0 голосов
/ 27 апреля 2019

Попробуйте изменить уровень корневого регистратора с WARN на INFO примерно так

<root level="INFO">
    <appender-ref ref="ASYNCSTDOUT" />
</root>

Все регистраторы наследуются от корневого регистратора и в соответствии с Logback docs :

Если данному регистратору не присвоен уровень, он наследует его от ближайшего предка с назначенным уровнем.

Здесь controllers.search.SearchController унаследовано 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" />
...