【问题标题】:Akka SLF4J and logback in ScalaScala 中的 Akka SLF4J 和 logback
【发布时间】:2016-01-19 20:55:12
【问题描述】:

我正在尝试为我的 akka Actor 系统设置一些基本日志记录,但到目前为止我只获得标准日志,而没有我添加的日志或输出文件。我跟随akka docs for logging 并设置了以下内容:

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

    "com.typesafe.akka" %% "akka-slf4j" % "2.3.14"
    "ch.qos.logback" % "logback-classic" % "1.0.9"
    
  • 我将此添加到 application.conf 文件中

    akka {
        loggers = ["akka.event.slf4j.Slf4jLogger"]
        loglevel = "DEBUG"
    }  
    
  • 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>
    
  • 这就是我想要做的日志记录

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

我没有收到来自标准日志记录的失败消息,并且我无法找到与现有解决方案有很大不同的其他解决方案。我已经尝试过this question 中的建议。这似乎是我遇到的同样问题,但建议没有奏效。我是否错过了一个步骤或配置了错误?

【问题讨论】:

    标签: scala logging akka slf4j logback


    【解决方案1】:

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

    akka {
      loggers = ["akka.event.slf4j.Slf4jLogger"]
      loglevel = "DEBUG"
      logging-filter = "akka.event.slf4j.Slf4jLoggingFilter"
    }
    

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

    来自docs的解释:

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

    警告!如果您将日志级别设置为高于“DEBUG”的级别,则任何 DEBUG 事件将在源头被过滤掉,永远不会 到达日志记录后端,无论后端如何 配置好了。

    你已经处理好了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-20
      • 2016-04-20
      • 1970-01-01
      • 1970-01-01
      • 2011-03-30
      • 2016-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多