Настройка logback для записи в разные файлы журналов

У меня есть актерская система с несколькими актерами. Акторы группируются по фиксированному набору доменов. В настоящее время я регистрируюсь только в одном большом файле журнала, который чередует журналы от разных субъектов, принадлежащих к разным доменам.

Как я могу настроить logback так ,чтобы каждый актер писал свой собственный.журнал. Кроме того, влияет ли запись в разные файлы журналов по сравнению с записью в один?

1 ответов


чего вы требуете вот SiftingAppender с актер/Актер дискриминатора системы на основе.
Укажите следующую конфигурацию в logback.в XML

<appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
<discriminator class="com.abc.ActorDomainBasedDiscriminator"/>
<sift>
    <appender name="FILE-${actorDomain}" class="ch.qos.logback.core.rolling.RollingFileAppender">
 <file>app-${actorDomain}.log</file>
...

эта конфигурация приведет к созданию файлов журнала, таких как " app-Domain1.log', ' app-Domain2.журнал' и т. д...

определите класс ActorDomainBasedDiscriminator

import ch.qos.logback.classic.spi.LoggingEvent
import ch.qos.logback.core.sift.Discriminator
import ch.qos.logback.core.spi.ContextAwareBase

class ActorDomainBasedDiscriminator extends ContextAwareBase with Discriminator[LoggingEvent] {
  private val Key = "actorDomain";

  @volatile
  private var started = false;

  def getDiscriminatingValue(event: LoggingEvent) = {
    val loggerName = event.getLoggerName
    if(loggerName.startsWith("Domain"))
      loggerName
    else event.getLevel.toString
  }

 def getKey: String = Key

 …

 } 

Теперь создайте регистраторы в классах актеров, как это...

   class Actor1 extends Actor {

      val logger = LoggerFactory.getLogger("Domain1")
      ....


    class Actor2 extends Actor {

      val logger = LoggerFactory.getLogger("Domain2")
      ....

  class Actor3 extends Actor {
      val logger = LoggerFactory.getLogger("Domain1")
      ...

вы можете сослаться на эту ссылку на для примера дискриминатора

http://www.nurkiewicz.com/2013/04/siftingappender-logging-different.html