Итак, у меня есть игровое приложение с такими подмодулями:
/app // play app
/modules/notifications
Внутри моего игрового приложения есть модуль задач, который запускает моего главного актера:
Logger.debug("starting main supervisor actor Iot")
val supervisor = system.actorOf(IotSupervisor.props(), "iot-supervisor")
внутри уведомлений у меня есть этот файл:
/ modules / notifications / src / main / supervisor.scala
package com.example.notifications
import akka.actor.{ Actor, ActorLogging, Props }
object IotSupervisor {
def props(): Props = Props(new IotSupervisor)
}
class IotSupervisor extends Actor with ActorLogging {
log.debug("Iot constrcutor called..")
override def preStart(): Unit = log.info("IoT Application started")
override def postStop(): Unit = log.info("IoT Application stopped")
// No need to handle any messages
override def receive = Actor.emptyBehavior
}
Я вижу журналы в своей консоли:
[отладка] приложение - запуск главного актера супервизора Iot [info] pahEnabledFilters - включенные фильтры (см. https://www.playframework.com/documentation/latest/Filters):
play.filters.csrf.CSRFFilter
play.filters.headers.SecurityHeadersFilter
[info] play.api.Play - приложение запущено(Dev)
Мой 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="DEBUG" />
<logger name="com.example.notifications" LEVEL="TRACE" />
<!-- 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>
Я не вижу никаких сообщений журнала внутри моих актеров, если я не использую log.error , почему это так?
Я установил уровень TRACE для com.example.notifications
Правильно ли я понимаю, что всякий раз, когда я использую регистратор, он будет использовать регистратор, определенный вlogback, который совпадает с именем пакета? т.е. com.example.notification будет использоваться для поиска регистратора в моем logback.xml и использованияУРОВЕНЬ там определен?