我正在制作一个小型库——Flow
真的是一个——并且想从它的代码中进行一些调试日志记录。该库将在基于 Log4J2 和 Logback 的应用程序中使用。我希望日志记录“刚刚发生”。
我做了什么:
所有库依赖项都是“提供”的:
libraryDependencies ++= Seq(
"com.typesafe.akka" %% "akka-slf4j" % AkkaVersion,
"com.typesafe.akka" %% "akka-stream" % AkkaVersion,
"com.typesafe.akka" %% "akka-http" % "10.1.12"
).map(_ % Provided) // those come from the application
我读过Akka Logging (Akka docs),但它是 2.4.20 版。2.6有类似的吗?
akka-slf4j
为库提供Logging
和LoggingFactory
类。logger在库中初始化的方式:
private val LOGGER = LoggerFactory.getLogger(this.getClass);
但是,不会发生日志记录。控制台输出,在提供 Logback 1.2.3 的主机上运行:
$ sbt test:run
[info] Loading settings for project global-plugins from plugins.sbt ...
[info] Loading global plugins from /Users/.../.sbt/1.0/plugins
[info] Loading project definition from /Users/.../myProject/project
[info] Loading settings for project ... from build.sbt ...
[info] Set current project to ... (in build file:...)
[info] running test.Main 10
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
SLF4J: Failed to load class "org.slf4j.impl.StaticMDCBinder".
SLF4J: Defaulting to no-operation MDCAdapter implementation.
SLF4J: See http://www.slf4j.org/codes.html#no_static_mdc_binder for further details.
...
从这些链接之一:
此错误表明在类路径上找不到适当的 SLF4J 绑定。将 slf4j-nop.jar、slf4j-simple.jar、slf4j-log4j12.jar、slf4j-jdk14.jar 或 logback-classic.jar 中的一个(也是唯一一个)放在类路径上应该可以解决问题。
如果我添加slf4j-simple
到库依赖项,我会得到日志,但它们没有着色。在我看来,我已经修复了库中的日志记录以使用它自己的日志记录实现——而不是我希望的主机。这个对吗?如何正确地做到这一点?
Akka 版本是 2.6.5