让Akka了解Play的logback配置

rec*_*ant 7 logback slf4j akka playframework-2.1

如何让Akka知道Play的logback配置(application-logger.xml)?
在我的情况下,它完全被忽略:

日志仅打印到stdout.我希望它被记录到application-logger.xml中定义的File-Appender

如果我将application-logger.xml重命名为logback.xml,则没有什么区别.

演员类:

class Dispatcher extends Actor with ActorLogging {
    // prints to stdout ONLY:
    log.error("[akka-logger] dispatch started...")
}
Run Code Online (Sandbox Code Playgroud)

CONF/application.conf:

play {
  akka {

    #log-config-on-start = on
    loggers = ["akka.event.slf4j.Slf4jLogger"]
    event-handlers = ["akka.event.slf4j.Slf4jEventHandler"]    
    loglevel = DEBUG

    # and so on...
}
Run Code Online (Sandbox Code Playgroud)

CONF /应用logger.xml

<configuration>

<appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${application.home}/logs/application.log</file>
    <encoder>
        <pattern>%date - [%level] - from %logger in %thread %n%message%n%xException%n</ pattern>
    </encoder>
</appender>
<!-- Using akka.event.slf4j.EventHandler does NOT make a difference here: -->
<logger name="akka.event.slf4j.Slf4jLogger" level="ERROR" additivity="false">
    <appender-ref ref="FILE"/>
</logger>

<logger name="play" level="ERROR" additivity="false">
    <appender-ref ref="FILE"/>
</logger>

<logger name="application" level="ERROR" additivity="false">
    <appender-ref ref="FILE"/>
</logger>

<root level="ERROR">
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="FILE"/>
</root>

</configuration>
Run Code Online (Sandbox Code Playgroud)

Ste*_*ski -1

play 用于 logback 的默认文件名是logger.xml- 请参阅参考。您可能还希望将根级别从错误更改为调试,以确保您在根级别获得任何日志消息。