2016-01-19 14 views
5

Próbuję skonfigurować podstawowe rejestrowanie dla mojego systemu akka actor, ale do tej pory otrzymuję tylko standardowe dzienniki i żadne z dodanych dzienników lub pliku wyjściowego. Śledzę wraz z akka docs for logging i utworzyły następujące:Akka SLF4J i logback w Scala

  • Dodałem te zależności do pliku build.sbt

    "com.typesafe.akka" %% "akka-slf4j" % "2.3.14" 
    "ch.qos.logback" % "logback-classic" % "1.0.9" 
    
  • I dodaje to do pliku application.conf

    akka { 
        loggers = ["akka.event.slf4j.Slf4jLogger"] 
        loglevel = "DEBUG" 
    } 
    
  • logback.xml jest w src/main/zasobów

    <configuration> 
        <appender name="FILE" class="ch.qos.logback.core.FileAppender"> 
         <File>./logs/akka.log</File> 
         <encoder> 
          <pattern>%d{HH:mm:ss.SSS} [%-5level] %msg%n</pattern> 
         </encoder> 
        </appender> 
        <root level="info"> 
         <appender-ref ref="FILE" /> 
        </root> 
    </configuration> 
    
  • To co mi skacze ma robić rejestrowanie

    import akka.event.Logging 
    
    val log = Logging(context.system, classOf[TickActor]) 
    log.info("Good Luck!") 
    

nie odbieranie i niepowodzenia ze standardowego logowania i nie były w stanie znaleźć dodatkowe rozwiązania znacznie różniące się od tego, co już mam. Próbowałem sugestii w this question. Wydawało mi się, że to ten sam problem, ale sugestie nie działają. Czy przegapiłem krok lub skonfigurowałem coś nie tak?

Odpowiedz

5

Wszystko wygląda poprawnie z wyjątkiem brakującego ustawienia akka.logging-filter. Oto jak powinna wyglądać następująco:

akka { 
    loggers = ["akka.event.slf4j.Slf4jLogger"] 
    loglevel = "DEBUG" 
    logging-filter = "akka.event.slf4j.Slf4jLoggingFilter" 
} 

o to projekt o tej samej konfiguracji, która rejestrowania pracy: application.conf i logback.xml.

Wyjaśnienie z docs:

Musisz włączyć Slf4jLogger w elemencie rejestratorów w Configuration. Tutaj możesz również zdefiniować poziom logu szyny zdarzeń . Więcej drobnoziarnistych poziomów dziennika można zdefiniować w konfiguracji zaplecza SLF4J (na przykład logback.xml). Należy także zdefiniować akka.event.slf4j.Slf4jLoggingFilter we właściwości konfiguracyjnej filtru rejestrującego . Będzie filtrować zdarzenia dziennika przy użyciu konfiguracji zaplecza (np. Logback.xml), zanim zostaną opublikowane na magistrali zdarzeń.

i

Ostrzeżenie! Jeśli ustawisz poziom języka na poziomie wyższym niż "DEBUG", wszystkie zdarzenia DEBUGA zostaną odfiltrowane już u źródła i nigdy nie osiągną one poziomu wewnętrznego, bez względu na to, jak skonfigurowano zaplecze wewnętrzne .

którą już załatwiłeś.

Powiązane problemy