在 Scala/akka 中记录到文件:ClassNotFoundException:akka.event.slf4j.Slf4jLoggingFilter

2023-12-28

我已经搜索了很多,但找不到有效的解决方案。有人可以帮我吗?

akka {
     event-handlers = ["akka.event.slf4j.Slf4jEventHandler"]
     loggers = ["akka.event.slf4j.Slf4jLogger"]
     loglevel = "DEBUG"
     logging-filter = "akka.event.slf4j.Slf4jLoggingFilter"
     stdout-loglevel = "WARNING"
     actor {
       debug {
         receive = on
         lifecycle = off
       }
     }
}

我已添加以下内容build.sbt希望其中之一能解决这个问题:

libraryDependencies ++= Seq (
  "com.typesafe.akka" %% "akka-actor" % "2.4.1",   // akka actors
  "ch.qos.logback" % "logback-classic" % "1.1.3",  //logback, in order to log to file
  "com.typesafe.scala-logging" % "scala-logging-slf4j_2.11" % "2.1.2",
  "com.typesafe.akka" % "akka-slf4j_2.11" % "2.4.1",   // needed for logback to work
  // and my other dependencies
)

我尝试过不同的建议logback.xml,其中最后一个是:

<configuration>
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>logs/filename.log</file>
        <encoder>
            <pattern>%date %level %msg%n</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <maxIndex>10</maxIndex>
            <FileNamePattern>logs/filename.log.%i.gz</FileNamePattern>
        </rollingPolicy>
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>20MB</maxFileSize>
        </triggeringPolicy>
    </appender>
    <root level="info">
        <appender-ref ref="FILE" />
    </root>
</configuration>

编辑:我的完整依赖项如下(ps:我目前都有lift and salat对于反/序列化,但这是一个不同的故事):

libraryDependencies ++= Seq (
  "org.scala-lang" % "scalap" % scalaVersion.value, 
  "com.typesafe.akka" %% "akka-actor" % "2.4.1",   
  "ch.qos.logback" % "logback-classic" % "1.1.3",  
  "com.typesafe.scala-logging" % "scala-logging-slf4j_2.11" % "2.1.2",
  "com.typesafe.akka" %% "akka-slf4j" % "2.4.1",  
  "com.github.sstone" %% "amqp-client" % "1.5", 
  "net.liftweb" %% "lift-json" % "2.6.2",
  "net.liftweb" %% "lift-json-ext" % "2.6.2",    
  "org.scalatest" %% "scalatest" % "2.2.4" % "test",
  "com.novus" %% "salat" % "1.9.9"
)

解决此类问题的最佳方法始终是查看依赖树并弄清楚那里发生了什么(这非常重要)maven or sbt)

查看您有多少个 slf4j 依赖项。 (我可以看到冲突的依赖关系slf4j-api:1.6.0, slf4j-api:1.7.2, slf4j-api:1.7.12)

sbt dependencyTree

[info]   +-com.novus:salat_2.11:1.9.9 [S]
[info]   | +-com.novus:salat-core_2.11:1.9.9 [S]
[info]   | | +-com.novus:salat-util_2.11:1.9.9 [S]
[info]   | | | +-org.scala-lang:scalap:2.11.5
[info]   | | | | +-org.scala-lang:scala-compiler:2.11.5 [S]
[info]   | | | |   +-org.scala-lang.modules:scala-parser-combinators_2.11:1.0.1 (evicted by: 1.0.3)
[info]   | | | |   +-org.scala-lang.modules:scala-parser-combinators_2.11:1.0.3 [S]
[info]   | | | |   +-org.scala-lang.modules:scala-xml_2.11:1.0.1 (evicted by: 1.0.3)
[info]   | | | |   +-org.scala-lang.modules:scala-xml_2.11:1.0.3 [S]
[info]   | | | |   +-org.scala-lang:scala-reflect:2.11.5 [S]
[info]   | | | |   
[info]   | | | +-org.slf4j:slf4j-api:1.6.0 (evicted by: 1.7.12)
[info]   | | | +-org.slf4j:slf4j-api:1.7.12
[info]   | | | +-org.slf4j:slf4j-api:1.7.2 (evicted by: 1.7.12)

[info]   +-ch.qos.logback:logback-classic:1.1.3
[info]   | +-ch.qos.logback:logback-core:1.1.3
[info]   | +-org.slf4j:slf4j-api:1.7.12
[info]   | +-org.slf4j:slf4j-api:1.7.7 (evicted by: 1.7.12)

[info]   | | +-org.mongodb:casbah-core_2.11:2.7.1 [S]
[info]   | |   +-com.github.nscala-time:nscala-time_2.11:1.0.0 [S]
[info]   | |   | +-joda-time:joda-time:2.3
[info]   | |   | +-org.joda:joda-convert:1.2
[info]   | |   | 
[info]   | |   +-org.mongodb:casbah-commons_2.11:2.7.1 [S]
[info]   | |   | +-com.github.nscala-time:nscala-time_2.11:1.0.0 [S]
[info]   | |   | | +-joda-time:joda-time:2.3
[info]   | |   | | +-org.joda:joda-convert:1.2
[info]   | |   | | 
[info]   | |   | +-org.mongodb:mongo-java-driver:2.12.1
[info]   | |   | +-org.slf4j:slf4j-api:1.6.0 (evicted by: 1.7.12)
[info]   | |   | +-org.slf4j:slf4j-api:1.7.12
[info]   | |   | 
[info]   | |   +-org.mongodb:casbah-query_2.11:2.7.1 [S]
[info]   | |   | +-com.github.nscala-time:nscala-time_2.11:1.0.0 [S]
[info]   | |   | | +-joda-time:joda-time:2.3
[info]   | |   | | +-org.joda:joda-convert:1.2
[info]   | |   | | 
[info]   | |   | +-org.mongodb:casbah-commons_2.11:2.7.1 [S]
[info]   | |   | | +-com.github.nscala-time:nscala-time_2.11:1.0.0 [S]
[info]   | |   | | | +-joda-time:joda-time:2.3
[info]   | |   | | | +-org.joda:joda-convert:1.2
[info]   | |   | | | 
[info]   | |   | | +-org.mongodb:mongo-java-driver:2.12.1
[info]   | |   | | +-org.slf4j:slf4j-api:1.6.0 (evicted by: 1.7.12)
[info]   | |   | | +-org.slf4j:slf4j-api:1.7.12
[info]   | |   | | 
[info]   | |   | +-org.slf4j:slf4j-api:1.6.0 (evicted by: 1.7.12)
[info]   | |   | +-org.slf4j:slf4j-api:1.7.12
[info]   | |   | 
[info]   | |   +-org.slf4j:slf4j-api:1.6.0 (evicted by: 1.7.12)
[info]   | |   +-org.slf4j:slf4j-api:1.7.12

[info]   | +-com.novus:salat-util_2.11:1.9.9 [S]
[info]   |   +-org.scala-lang:scalap:2.11.5
[info]   |   | +-org.scala-lang:scala-compiler:2.11.5 [S]
[info]   |   |   +-org.scala-lang.modules:scala-parser-combinators_2.11:1.0.1 (evicted by: 1.0.3)
[info]   |   |   +-org.scala-lang.modules:scala-parser-combinators_2.11:1.0.3 [S]
[info]   |   |   +-org.scala-lang.modules:scala-xml_2.11:1.0.1 (evicted by: 1.0.3)
[info]   |   |   +-org.scala-lang.modules:scala-xml_2.11:1.0.3 [S]
[info]   |   |   +-org.scala-lang:scala-reflect:2.11.5 [S]
[info]   |   |   
[info]   |   +-org.slf4j:slf4j-api:1.6.0 (evicted by: 1.7.12)
[info]   |   +-org.slf4j:slf4j-api:1.7.12
[info]   |   +-org.slf4j:slf4j-api:1.7.2 (evicted by: 1.7.12)

[info]   +-com.typesafe.scala-logging:scala-logging-slf4j_2.11:2.1.2 [S]
[info]   | +-com.typesafe.scala-logging:scala-logging-api_2.11:2.1.2 [S]
[info]   | +-org.scala-lang:scala-reflect:2.11.5 [S]
[info]   | +-org.slf4j:slf4j-api:1.7.12
[info]   | +-org.slf4j:slf4j-api:1.7.7 (evicted by: 1.7.12)

[info]   +-net.liftweb:lift-json-ext_2.11:2.6.2 [S]
[info]   | +-commons-codec:commons-codec:1.6
[info]   | +-joda-time:joda-time:2.1 (evicted by: 2.3)
[info]   | +-joda-time:joda-time:2.3
[info]   | +-net.liftweb:lift-common_2.11:2.6.2 [S]
[info]   | | +-org.scala-lang.modules:scala-parser-combinators_2.11:1.0.1 (evicted by: 1.0.3)
[info]   | | +-org.scala-lang.modules:scala-parser-combinators_2.11:1.0.3 [S]
[info]   | | +-org.scala-lang.modules:scala-xml_2.11:1.0.1 (evicted by: 1.0.3)
[info]   | | +-org.scala-lang.modules:scala-xml_2.11:1.0.3 [S]
[info]   | | +-org.slf4j:slf4j-api:1.6.0 (evicted by: 1.7.12)
[info]   | | +-org.slf4j:slf4j-api:1.7.12
[info]   | | +-org.slf4j:slf4j-api:1.7.2 (evicted by: 1.7.12)

要知道使用的是哪个版本,

$ sbt dependencyList
[info] org.slf4j:slf4j-api:1.7.12

这样您就可以控制想要的版本以及要排除的版本,

例如。排除slf4j-api版本salat uses

"com.novus" %% "salat" % "1.9.9" exclude("org.slf4j","slf4j-api")

Note

add addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.8.2") to project/plugins.sbt to use sbt dependencyTree.

https://github.com/jrudolph/sbt-dependency-graph#usage-instructions https://github.com/jrudolph/sbt-dependency-graph#usage-instructions

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Scala/akka 中记录到文件:ClassNotFoundException:akka.event.slf4j.Slf4jLoggingFilter 的相关文章

随机推荐