如何在PlayFramework中处理日志记录依赖项

时间:2017-03-16 21:43:21

标签: playframework-2.0 slf4j

我在PlayFramework内部记录时遇到了一些问题。

我有一个依赖,似乎带来了int isNumericFloat(float value); // I don't really know what arguments it takes // but you can surely infer them from the code ,显然与Play的内部日志记录有冲突。在当前形式中,在"org.slf4j", "slf4j-log4j12"时,它给了我这个例外:

compile

但是排除它会使它编译:

java.lang.ClassCastException: org.slf4j.impl.Log4jLoggerFactory cannot be cast to ch.qos.logback.classic.LoggerContext
    at play.api.libs.logback.LogbackLoggerConfigurator.configure(LogbackLoggerConfigurator.scala:80)
    at play.api.libs.logback.LogbackLoggerConfigurator.init(LogbackLoggerConfigurator.scala:26)
    at play.core.server.DevServerStart$$anonfun$mainDev$1.apply(DevServerStart.scala:94)
    at play.core.server.DevServerStart$$anonfun$mainDev$1.apply(DevServerStart.scala:65)
    at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
    at play.core.server.DevServerStart$.mainDev(DevServerStart.scala:64)
    at play.core.server.DevServerStart$.mainDevHttpMode(DevServerStart.scala:54)
    at play.core.server.DevServerStart.mainDevHttpMode(DevServerStart.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at play.runsupport.Reloader$.startDevMode(Reloader.scala:234)
    at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.devModeServer$lzycompute$1(PlayRun.scala:74)
    at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.play$sbt$run$PlayRun$$anonfun$$anonfun$$anonfun$$devModeServer$1(PlayRun.scala:74)
    at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.apply(PlayRun.scala:100)
    at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.apply(PlayRun.scala:53)
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)

但是给出了运行时异常:

    projectDependencies := {
      Seq((projectID in root).value.exclude("org.slf4j", "slf4j-log4j12"))
    }

因为我系统的某些内部组件使用此日志记录。任何想法如何解决这个日志记录依赖的噩梦?

1 个答案:

答案 0 :(得分:1)

您只需要从冲突的包中排除log4j依赖关系,而不是整个项目。

示例:

libraryDependencies += "tf56" % "risk" % "1.0.3" exclude("org.slf4j", "slf4j-log4j12")
相关问题