2016-01-19 39 views
5

Sto provando ad impostare alcune registrazioni di base per il mio sistema di attore akka, ma finora sto ottenendo solo i registri standard e nessuno dei miei registri aggiunti o un file di output. Ho seguito con il akka docs for logging e ho posto la seguente:Akka SLF4J e logback in Scala

  • ho aggiunto queste dipendenze al file build.sbt

    "com.typesafe.akka" %% "akka-slf4j" % "2.3.14" 
    "ch.qos.logback" % "logback-classic" % "1.0.9" 
    
  • ho aggiunto questo al file application.conf

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

    <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> 
    
  • Questo è quello che sto saltellando deve fare la registrazione

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

non ricevo e messaggi del fallimento della registrazione standard e non sono stato in grado di trovare soluzioni aggiuntive molto diverse da quelle che ho già. Ho provato i suggerimenti in this question. Sembrava lo stesso problema che ho, ma i suggerimenti non hanno funzionato. Ho saltato un passaggio o configurato qualcosa di sbagliato?

risposta

5

Tutto sembra corretto tranne l'impostazione mancante akka.logging-filter. Ecco come dovrebbe apparire come:

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

Ecco un progetto con la stessa impostazione che ha la registrazione di lavoro: application.conf e logback.xml.

Spiegazione dalla docs:

È necessario abilitare lo Slf4jLogger nell'elemento logger nel configurazione. Qui puoi anche definire il livello di log del bus dell'evento. È possibile definire più livelli di registro a grana fine nella configurazione del back-end SLF4J (ad es. Logback.xml). È inoltre necessario definire akka.event.slf4j.Slf4jLoggingFilter nella proprietà di configurazione del filtro di registrazione . Filtra gli eventi del registro utilizzando la configurazione del backend (ad es. Logback.xml) prima di essere pubblicati su il bus degli eventi.

e

Attenzione! Se imposti il ​​loglevel a un livello superiore a "DEBUG", tutti gli eventi di DEBUG verranno filtrati già all'origine e non arriveranno mai al backend di registrazione, a prescindere da come il backend è configurato come .

di cui ti sei già occupato.