gpt4 book ai didi

akka - 让 Akka 知道 Play 的 logback 配置

转载 作者:行者123 更新时间:2023-12-04 12:48:18 26 4
gpt4 key购买 nike

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

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

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

Actor 类:

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。这是我所做的。

应用程序.conf:

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

在我的 logger.xml 中看起来像这样:
<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>

需要注意的关键是我使用 Actor 所在的根包名称作为我的记录器。你可以像你喜欢的那样具体,即 com.actors 或 com.actors.someactors 等...

您可以在 play-framework 组中的这个 google 组线程上看到更多信息:

Make Akka aware of Play's logback configuration

关于akka - 让 Akka 知道 Play 的 logback 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16048087/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com