使Akka了解Play的登录配置 [英] Make Akka aware of Play's logback configuration

查看:85
本文介绍了使Akka了解Play的登录配置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我如何使Akka知道Play的logback配置(application-logger.xml)?
就我而言,它被完全忽略了:

How do I make Akka aware of Play's logback config (application-logger.xml)?
In my case it is completely ignored:

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

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...
}

conf/application-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>

推荐答案

我遇到了同样的问题.我正在使用play 2.2.1(也已在2.2.2上进行了测试)和akka 2.2.3的升级版(但它也可以与play附带的版本一起使用).我还应该注意,我使用的是Java,而不是Scala.这就是我所做的.

I had the same problem. I'm using play 2.2.1 (also tested with 2.2.2) and upgraded version of akka 2.2.3 (But it also works with the version that comes with play). I should also note that I'm using Java not Scala. Here is what I did.

application.conf:

application.conf:

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

在我的logger.xml中,如下所示:

And in my logger.xml looks like this:

<configuration>

  <conversionRule conversionWord="coloredLevel" converterClass="play.api.Logger$ColoredLevel" />

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

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

  <logger name="play" level="DEBUG" />
  <logger name="application" level="DEBUG" />
    <!-- use the package names of classes for specific loggers  -->
  <logger name="actor" level="DEBUG" />

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

</configuration>

要注意的关键是,我使用角色作为我的记录器的根包名称.您可以根据自己的喜好指定具体对象,例如com.actors或com.actors.someactors等...

The key thing to note is that I use the root package name where the actors are as my logger. You can be as specific as you like ie com.actors or com.actors.someactors etc...

您可以在play-framework组中找到有关此Google组线程的更多信息:

You can see more on this google group thread in the play-framework group:

让Akka意识到Play的登录配置

这篇关于使Akka了解Play的登录配置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆