Как включить ведение журнала уровня DEBUG только для контроллеров приложений? - PullRequest
1 голос
/ 11 июня 2019

Я на Scala 2.12.x Play 2.7.x, и в качестве части моих контроллеров приложений я использую регистратор, подобный этому (или, аналогично, with play.api.Logging):

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

иконфигурация conf/logback.xml показана ниже.Проблема в том, что операторы Application-Controllers 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 для всего, но тогда это слишком много информации, которая мне не нужна, я хотел бы посмотреть, что происходит с журналированием моих контроллеров.

1 Ответ

1 голос
/ 11 июня 2019

Регистратор, созданный с помощью 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 представляетсяустарел в соответствии с документами :

Существует также одноэлементный объект play.api.Logger, который позволяет получить доступ к приложению с именем logger, но его использование в Play 2.7 не рекомендуется.0 и выше.Вы должны объявить свои собственные экземпляры регистратора ...

Если сообщения все еще не регистрируются, попробуйте перейти от асинхронного приложения к синхронному, например так:

<root level="WARN">
  <appender-ref ref="FILE" />
  <appender-ref ref="STDOUT" />
</root>
...