Akka 阿克卡;SLF4J配置
我读了这篇文章,对于如何让Akka使用SLF4J仍然有点困惑。我的理解是正确的,一般过程是:Akka 阿克卡;SLF4J配置,akka,slf4j,Akka,Slf4j,我读了这篇文章,对于如何让Akka使用SLF4J仍然有点困惑。我的理解是正确的,一般过程是: 在运行时类路径上包括akka-slf4j模块,该模块可传递地拉入slf4j api 在运行时类路径上包括SLF4J后端,例如Logback 配置日志后端(以某种方式,请参见下文) 像普通一样实例化和使用SLF4J记录器 因此,首先,如果我错过或误解了上述任何一个步骤,请先纠正我!假设我或多或少是正确的,我在两个方面仍然完全不知道: 我是配置Akka还是配置SLf4J“后端”(绑定)?(见下文) 为什么
akka-slf4j
模块,该模块可传递地拉入slf4j api
- 我是配置Akka还是配置SLf4J“后端”(绑定)?(见下文)
- 为什么我不像平常一样实例化SLF4J记录器?(见下文)
Logback.xml
文件。或者,如果我使用的是slf4j simple
,我会确保运行时类路径上有一个slf4j.properties
文件。但是对于Akka,我似乎需要声明一个Akka.loggers
部分,如下所示:
akka {
loggers = ["akka.event.slf4j.Slf4jLogger"]
loglevel = "DEBUG"
logging-filter = "akka.event.slf4j.Slf4jLoggingFilter"
}
…和/或像平常一样配置SLF4J绑定那是哪一个呢?
记录器实例化
我不明白你为什么不像平常一样实例化SL4J记录器。通常,在actor/actor系统之外,我的记录器实例化如下所示:
public class FizzBuzz {
Logger logger = Logger.getLogger(FizzBuzz.class);
// ...etc.
}
public class FizzBuzz {
LoggingAdapter log = Logging.getLogger(system.eventStream(), "my.string");
// ...etc.
}
但在Akka文档中,我似乎必须这样实例化它们:
public class FizzBuzz {
Logger logger = Logger.getLogger(FizzBuzz.class);
// ...etc.
}
public class FizzBuzz {
LoggingAdapter log = Logging.getLogger(system.eventStream(), "my.string");
// ...etc.
}
为什么强>
另外,如果有人能向我解释“MDC值”(?)的使用/目的,
DiagnosticLoggingAdapter
Akka出于非阻塞原因也使用actors进行日志记录,则可获得额外积分。每次您想要记录一些东西并使用Akka提供的记录器(比如添加ActorLogging
trait后可用的记录器)时,它实际上会向日志参与者发送一条消息,参与者会注意与您选择的后端日志框架进行交互
关于
MDC
,它通常用于根据某个值过滤数据并将数据发送到不同的附加器MDC
代表映射的诊断上下文,这意味着您将拥有一个包含一些值的上下文,您可以使用这些值以智能优雅的方式分发日志。感谢@hveiga(+1)-关于日志配置的快速跟进:我(a)是否只使用Akka日志配置(类似于Akka{…}
closure上文)或(b)同时使用Akka日志配置和logback.xml
?您需要两者。您需要将akka logger设置为slf4j,然后为所有附加器和记录器配置logback.xml。对于MDC,官方文档。他们还参考了解释该概念的Logback页面。