2017-01-16 11 views
1

私のロギングは私の演奏コードからうまく機能していますが、私が持っているakkaコードはファイル/ stdoutにロギングしていません。私のakkaロギングが演奏の中で動作しない理由

class EmailActor extends Actor with ActorLogging { 
    import EmailActor._ 

    log.info("email actor hatched..") 
... 
} 

このアクターを作成すると、ログファイルまたは標準出力のログエントリが表示されません。

私はこのベーターテンプレートからデフォルトのapplication.confを持っている:https://github.com/playframework/play-scala/blob/master/conf/logback.xml

は、私はいくつかのAkkaのラベルと私のlogbackファイルを変更する必要がありますか?私はこれを追加した私の依存関係で

akka { 
    loggers = ["akka.event.slf4j.Slf4jLogger"] 
    #loggers = ["akka.event.Logging$DefaultLogger"] 

    loglevel = "DEBUG" 
    logging-filter = "akka.event.slf4j.Slf4jLoggingFilter" 

    actor { 
    debug { 
     lifecycle = on 
    } 
    } 
} 

(および両方私のプレイのアプリのDEPに追加されます):

アップデートは

私はapplication.confで、今これを行っている

val akkaSlf4j = "com.typesafe.akka" %% "akka-slf4j" % Version.akkaSlf4j 
val logback = "ch.qos.logback" % "logback-classic" % Version.logback 

私logback.xmlは、次のようになります。

<!-- https://www.playframework.com/documentation/latest/SettingsLogger --> 
<configuration> 

    <conversionRule conversionWord="coloredLevel" converterClass="play.api.libs.logback.ColoredLevel" /> 

    <appender name="FILE" class="ch.qos.logback.core.FileAppender"> 
    <file>${application.home:-.}/logs/application.log</file> 
    <encoder> 
     <pattern>%date [%level] from %logger in %thread - %message%n%xException</pattern> 
    </encoder> 
    </appender> 

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <encoder> 
     <pattern>%coloredLevel %logger{15} - %message%n%xException{10}</pattern> 
    </encoder> 
    </appender> 

    <appender name="ASYNCFILE" class="ch.qos.logback.classic.AsyncAppender"> 
    <appender-ref ref="FILE" /> 
    </appender> 

    <appender name="ASYNCSTDOUT" class="ch.qos.logback.classic.AsyncAppender"> 
    <appender-ref ref="STDOUT" /> 
    </appender> 

    <logger name="play" level="INFO" /> 
    <logger name="application" level="DEBUG" /> 

    <!-- Off these ones as they are annoying, and anyway we manage configuration ourselves --> 
    <logger name="com.avaje.ebean.config.PropertyMapLoader" level="OFF" /> 
    <logger name="com.avaje.ebeaninternal.server.core.XmlConfigLoader" level="OFF" /> 
    <logger name="com.avaje.ebeaninternal.server.lib.BackgroundThread" level="OFF" /> 
    <logger name="com.gargoylesoftware.htmlunit.javascript" level="OFF" /> 

    <root level="WARN"> 
    <appender-ref ref="ASYNCFILE" /> 
    <appender-ref ref="ASYNCSTDOUT" /> 
    </root> 

</configuration> 

STDOUTまたはActorLoggingログメソッドを使用して作成したログファイルにakka関連のログは表示されません。

答えて

3

で指定されたファイル等しいloger_nameとロガーはINFOレベルでログに記録する「再生」することができ、あなたのlogback.xmlはこのラインを持っているかに注意してください、

<logger name="play" level="INFO" /> 

現れる開始する必要があります。

同様に、ログバックには次のものを追加する必要があります。XML、

<logger name="akka.event.slf4j.Slf4jLogger" level="DEBUG" /> 
1

あなたはSTDOUTにアッカのログを見ることができるはずapplication.confに

akka { 
    loglevel = "DEBUG" 

    actor { 
    debug { 
     lifecycle = on 
    } 
    } 
} 

を、以下の設定を入れてください。 akkaロギングページへはlinkです。

------------------ SLF4Jのアップデート-----------------------

これら二つの依存関係

"com.typesafe.akka" %% "akka-slf4j" % "2.2.3" 
"ch.qos.logback" % "logback-classic" % "1.0.9" 

上記の二つの変更により設定

akka { 
    loggers = ["akka.event.slf4j.Slf4jLogger"] 
    loglevel = "INFO" 
} 

でこれを追加

は、SLF4Jロギングは、このanswer

を参照してください使用するにはログはlogback.xml

+0

を追加し、デフォルトのログレベルがWARN

に設定されていることかもしれないですakkaのライフサイクルログなどを見ることができます。しかし、アクターにActorLoggingを使用し、log.debug( "hello")を使用すると、STDOUTまたはログファイルに表示されません。 – Blankman

+0

@Blankmanあなたは私の更新された答えを見ることができます –

+0

ちょうど私が理解しているのは、上のSTDOUTはakkaロギングを出力していますが、私自身のログステートメントをSTDOUTに表示するには、SLF4Jが必要ですか? – Blankman

0

はちょうど私が、ことを私やった<root level="WARN"><root level="DEBUG">

を変更してみてくださいまたはEmailActor

に一致 <logger level="DEBUG" name="...">
関連する問題