Я предполагаю, что вы используете веху Akka 2.0, и я также предполагаю, что вы получите свой регистратор следующим образом:
val log = Logging(context.system, this)
Как задокументировано, представление актера по умолчанию в терминах категории журнала - это его путь. К сожалению, logback не подготовлен для работы с иерархиями акторов, он настроен для работы с именами пакетов (то есть иерархией, разделенной точками), поэтому ваши настройки влияют на неправильный регистратор. Недавно произошли некоторые изменения в этой области в мастере Akka, который станет частью этапа 3 (который скоро будет выпущен очень скоро), где категория журнала по умолчанию будет получена из фактического класса реализации (согласно LoggerFactory.getLogger(someClass)
). Если вы хотите добиться того же в своей старой версии Akka, используйте
val log = Logging(context.system, getClass.getName)
Обратите внимание, что это, конечно, НЕ объединяет волшебную иерархию имен актеров с именами ваших пакетов, т. Е. Вам придется настраивать для каждого класса акторов, как это принято для традиционных сред ведения журналов Java. Если вы хотите, напишите свое собственное преобразование из пути актера в иерархическое имя, разделенное точками, и передайте полученную строку фабрике:
val log = Logging(context.system.eventStream, mangleMyName(self.path))
Изменение использования eventStream
вместо простого system
будет необходимо после обновления до более поздней версии, поскольку другое изменение заключалось в том, что имя системы теперь будет добавлено к простым категориям журналирования при передаче в систему. Предположим, system.name == "Fred"
:
val log = Logging(context.system, "testa") // will log as "testa(Fred)"