Akka SLF4J和Scala中的logback

the*_*tch 7 logging scala logback slf4j akka

我正在尝试为我的akka​​ actor系统设置一些基本的日志记录,但到目前为止我只获取标准日志而不是我添加的日志或输出文件.我已经跟踪了用于日志记录akka文档,并设置了以下内容:

  • 我将这些依赖项添加到build.sbt文件中

    "com.typesafe.akka" %% "akka-slf4j" % "2.3.14"
    "ch.qos.logback" % "logback-classic" % "1.0.9"
    
    Run Code Online (Sandbox Code Playgroud)
  • 我将其添加到application.conf文件中

    akka {
        loggers = ["akka.event.slf4j.Slf4jLogger"]
        loglevel = "DEBUG"
    }  
    
    Run Code Online (Sandbox Code Playgroud)
  • logback.xml位于src/main/resources中

    <configuration>
        <appender name="FILE" class="ch.qos.logback.core.FileAppender">
            <File>./logs/akka.log</File>
            <encoder>
                <pattern>%d{HH:mm:ss.SSS} [%-5level] %msg%n</pattern>
            </encoder>
        </appender>
        <root level="info">
            <appender-ref ref="FILE" />
        </root>
    </configuration>
    
    Run Code Online (Sandbox Code Playgroud)
  • 这就是我跳跃应该做的日志记录

    import akka.event.Logging
    
    val log = Logging(context.system, classOf[TickActor])
    log.info("Good Luck!")
    
    Run Code Online (Sandbox Code Playgroud)

我没有收到标准日志记录中的失败消息,也没有找到与我已有的解决方案有很大不同的其他解决方案.我已经尝试过这个问题的建议.这似乎是我遇到的同样问题,但这些建议没有用.我错过了一步或配置错了吗?

yǝs*_*ǝla 9

除了丢失的akka.logging-filter设置外,一切看起来都很正确.这里应该是这样的:

akka {
  loggers = ["akka.event.slf4j.Slf4jLogger"]
  loglevel = "DEBUG"
  logging-filter = "akka.event.slf4j.Slf4jLoggingFilter"
}
Run Code Online (Sandbox Code Playgroud)

这是一个具有相同设置的项目,具有日志记录功能:application.conflogback.xml.

文档说明:

您需要在Configuration中的loggers元素中启用Slf4jLogger.您还可以在此处定义事件总线的日志级别.可以在SLF4J后端的配置中定义更细粒度的日志级别(例如logback.xml).您还应该在logging-filter配置属性中定义akka.event.slf4j.Slf4jLoggingFilter.它将在发布到事件总线之前使用后端配置(例如logback.xml)过滤日志事件.

警告!如果将loglevel设置为高于"DEBUG"的级别,则任何DEBUG事件都将在源处过滤掉,并且永远不会到达日志记录后端,无论后端如何配置.

你已经照顾好了.