2016-01-19 8 views
5

Ich versuche einige grundlegende Protokollierung für mein Akka Actor-System einzurichten, aber bis jetzt bekomme ich nur die Standard-Logs und keine meiner hinzugefügten Logs oder eine Ausgabedatei. Ich habe mit den akka docs for logging gefolgt entlang und eingerichtet habe, die folgenden:Akka SLF4J und Logback in Scala

  • ich diese Abhängigkeiten zu der build.sbt Datei hinzugefügt

    "com.typesafe.akka" %% "akka-slf4j" % "2.3.14" 
    "ch.qos.logback" % "logback-classic" % "1.0.9" 
    
  • ich dies die application.conf Datei hinzugefügt

    akka { 
        loggers = ["akka.event.slf4j.Slf4jLogger"] 
        loglevel = "DEBUG" 
    } 
    
  • logback.xml ist in src/main/resources

    <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> 
    
  • Das ist, was ich Hopping die Protokollierung

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

erhalte ich nicht tun sollte und Meldungen des Fehlers von dem Standard-Logging, und ich habe nicht in der Lage gewesen, Finde andere Lösungen, die sich von denen, die ich bereits habe, unterscheiden. Ich habe die Vorschläge in this question versucht. Es schien das gleiche Problem zu sein, das ich habe, aber die Vorschläge haben nicht funktioniert. Habe ich einen Schritt verpasst oder etwas falsch konfiguriert?

Antwort

5

Alles sieht korrekt aus außer der fehlenden akka.logging-filter Einstellung. Hier , wie es aussehen soll:

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

Hier ist ein Projekt mit dem gleichen Setup, das Arbeits hat Protokollierung: application.conf und logback.xml.

Erklärung vom docs:

Sie müssen die Slf4jLogger im Logger Element in der Konfiguration ermöglichen. Hier können Sie auch den Log-Level des Events Bus definieren. In der Konfiguration des SLF4J-Backends (z. B. logback.xml) können feinere Protokollebenen definiert werden. Sie sollten auch akka.event.slf4j.Slf4jLoggingFilter in der Konfigurationseigenschaft logging-filter definieren. Es filtert die Protokollereignisse unter Verwendung der Backendkonfiguration (z. B. logback.xml), bevor sie auf dem Ereignisbus veröffentlicht werden.

und

Achtung! Wenn Sie den Loglevel auf eine höhere Stufe als "DEBUG" setzen, werden alle DEBUG-Ereignisse bereits an der Quelle ausgefiltert und erreichen nie das Logging-Backend, unabhängig davon, wie das Backend konfiguriert ist.

auf die Sie bereits aufgepasst haben.