Play Framework 2.6: настройка ведения журнала Akka HTTP - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть приложение Play 2.6, в котором я позволяю приложению записывать все в файл журнала и на терминал во время разработки. Я хочу, чтобы весь вывод, который виден на терминале, также был в лог-файле. Иногда я получаю такие сообщения:

[WARN] [04/26/2018 20:06:22.108] [play-dev-mode-akka.actor.default-dispatcher-2] [akka.actor.ActorSystemImpl(play-dev-mode)] Illegal request, responding with status '501 Not Implemented': Unsupported HTTP method: COPY

Однако я не могу направить их (я думаю, журналы Акку) в мой файл app.log. Кто-нибудь может помочь? Вот мой logback.xml:

<configuration>

  <conversionRule conversionWord="coloredLevel" converterClass="play.api.libs.logback.ColoredLevel" />

  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${application.home:-.}/logs/app.log</file>
    <encoder>
      <pattern>[%date]: %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="access" level="INFO">
    <appender-ref ref="ASYNCFILE" />
  </logger>

  <!-- 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="INFO">
    <appender-ref ref="ASYNCFILE" />
    <appender-ref ref="ASYNCSTDOUT" />
  </root>

</configuration>

Спасибо!

1 Ответ

0 голосов
/ 01 мая 2018

Если мы импортируем следующие зависимости

libraryDependencies ++= Seq(
  "com.typesafe.akka" %% "akka-slf4j"      % akkaVersion,
  "ch.qos.logback"    %  "logback-classic" % "1.2.3"
)

и добавьте следующие свойства к application.conf

akka {
  loggers = ["akka.event.slf4j.Slf4jLogger"]
  loglevel = "DEBUG"
}

тогда Akka должна подобрать logback.xml конфигурацию и использовать приложение ASYNCFILE.

Подробнее см. Документация Akka SLF4J .

...