Akka 阿克卡;SLF4J配置

Akka 阿克卡;SLF4J配置,akka,slf4j,Akka,Slf4j,我读了这篇文章,对于如何让Akka使用SLF4J仍然有点困惑。我的理解是正确的,一般过程是: 在运行时类路径上包括akka-slf4j模块,该模块可传递地拉入slf4j api 在运行时类路径上包括SLF4J后端,例如Logback 配置日志后端(以某种方式,请参见下文) 像普通一样实例化和使用SLF4J记录器 因此,首先,如果我错过或误解了上述任何一个步骤,请先纠正我!假设我或多或少是正确的,我在两个方面仍然完全不知道: 我是配置Akka还是配置SLf4J“后端”(绑定)?(见下文) 为什么

我读了这篇文章,对于如何让Akka使用SLF4J仍然有点困惑。我的理解是正确的,一般过程是:

  • 在运行时类路径上包括
    akka-slf4j
    模块,该模块可传递地拉入
    slf4j api
  • 在运行时类路径上包括SLF4J后端,例如Logback
  • 配置日志后端(以某种方式,请参见下文)
  • 像普通一样实例化和使用SLF4J记录器
  • 因此,首先,如果我错过或误解了上述任何一个步骤,请先纠正我!假设我或多或少是正确的,我在两个方面仍然完全不知道:

    • 我是配置Akka还是配置SLf4J“后端”(绑定)?(见下文)
    • 为什么我不像平常一样实例化SLF4J记录器?(见下文)
    配置 如果我通常使用SLF4J/Logback,我会确保运行时类路径上有一个
    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页面。