使Akka了解Play的登录配置 [英] Make Akka aware of Play's logback configuration
问题描述
我如何使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的登录配置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!