我的日志消息适用于一个类型为 akka 的文件,但不适用于经典演员

My log messages are working for one file with akka typed, but not for classic actor

我不确定发生了什么,但我的日志记录适用于我的 akka 类型演员,但不适用于我的经典演员。

两者也属于同一个根包,这是我的设置:

 libraryDependencies ++= Seq(
      "io.netty" % "netty-all" % "4.1.68.Final",
      "com.typesafe.akka" %% "akka-actor" % AkkaVersion,
      "com.typesafe.akka" %% "akka-actor-typed" % AkkaVersion,
      "com.typesafe.akka" %% "akka-stream" % AkkaVersion,
      "ch.qos.logback" % "logback-classic" % "1.2.10",
      scalaTest % Test
    )

我的logback.xml是:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
        <encoder>
            <pattern>[%date{ISO8601}] [%level] [%logger] [%marker] [%thread] - %msg MDC: {%mdc}%n</pattern>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>target/myapp-dev.log</file>
        <encoder>
            <pattern>[%date{ISO8601}] [%level] [%logger] [%marker] [%thread] - %msg MDC: {%mdc}%n</pattern>
        </encoder>
    </appender>

    <logger name="myapp" level="ALL" />

    <root level="DEBUG">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>

在这两个文件中,我在导入中都有这个:

package myapp.typed

import ch.qos.logback.classic.Logger
import org.slf4j.LoggerFactory

在我输入的演员中:

context.log.info("Type actors starting...startup message received..")




package myapp.classic

import ch.qos.logback.classic.Logger
import org.slf4j.LoggerFactory

我拥有的经典演员内幕:

   ....  with ActorLogging {

   log.debug("hello...")

在我的主要应用程序中,我这样做:

  implicit val system = akka.actor.ActorSystem("my-classic-actor-system")
  implicit val typedGuardian = system.spawn(MyTypedActor(), "akka-typed-root")

我不确定这是否相关,但也许是...(混合类型演员与经典)

可能是什么问题?

我会检查您的配置中的日志级别,或明确设置它:

akka {
  loglevel = "DEBUG"
  log-config-on-start = on  # if you want to debug config
}

同时检查使用了哪个记录器:

Akka (2.3.0) fails to load Slf4jEventHandler class with java.lang.ClassNotFoundException

我也没有在您的库中看到 logback 依赖项。类似的东西会起作用:

val AkkaVersion = "2.6.18"
libraryDependencies ++= Seq(
  "com.typesafe.akka" %% "akka-slf4j" % AkkaVersion,
  "ch.qos.logback" % "logback-classic" % "1.2.9"
)

最后,尝试打印更高的错误,如 infoerror 以查看是否是日志级别问题。

如果没有任何帮助,您可以调试日志记录代码本身并查看其配置方式,但我认为这没有必要。