2
我在PlayFramework內部的日誌記錄中遇到了一些問題。如何處理PlayFramework中的日誌依賴性
我有一個依賴關係,似乎將帶來"org.slf4j", "slf4j-log4j12"
這顯然與Play的內部日誌衝突。在目前的形式,在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"))
}
但給人運行時異常:
play.api.http.HttpErrorHandlerExceptions$$anon$1: Execution exception[[SerializationException: java.lang.ClassNotFoundException: org.slf4j.impl.Log4jLoggerAdapter]]
at play.api.http.HttpErrorHandlerExceptions$.throwableToUsefulException(HttpErrorHandler.scala:293)
at play.api.http.DefaultHttpErrorHandler.onServerError(HttpErrorHandler.scala:220)
at play.api.GlobalSettings$class.onError(GlobalSettings.scala:160)
at play.api.DefaultGlobal$.onError(GlobalSettings.scala:188)
at play.api.http.GlobalSettingsHttpErrorHandler.onServerError(HttpErrorHandler.scala:100)
at play.core.server.netty.PlayRequestHandler$$anonfun$2$$anonfun$apply$1.applyOrElse(PlayRequestHandler.scala:100)
at play.core.server.netty.PlayRequestHandler$$anonfun$2$$anonfun$apply$1.applyOrElse(PlayRequestHandler.scala:99)
at scala.concurrent.Future$$anonfun$recoverWith$1.apply(Future.scala:346)
at scala.concurrent.Future$$anonfun$recoverWith$1.apply(Future.scala:345)
at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)
Caused by: org.apache.commons.lang.SerializationException: java.lang.ClassNotFoundException: org.slf4j.impl.Log4jLoggerAdapter
at org.apache.commons.lang.SerializationUtils.deserialize(SerializationUtils.java:166)
at org.apache.commons.lang.SerializationUtils.deserialize(SerializationUtils.java:193)
at edu.illinois.cs.cogcomp.core.utilities.SerializationHelper.deserializeTextAnnotationFromBytes(SerializationHelper.java:124)
at edu.illinois.cs.cogcomp.pipeline.server.ServerClientAnnotator.annotate(ServerClientAnnotator.java:114)
at org.allenai.ari.solvers.textilp.solvers.TextILPSolver.solve(TextILPSolver.scala:195)
at controllers.SolveQuestion$$anonfun$solve$1.apply(SolveQuestion.scala:134)
at controllers.SolveQuestion$$anonfun$solve$1.apply(SolveQuestion.scala:89)
at play.api.mvc.ActionBuilder$$anonfun$apply$13.apply(Action.scala:371)
at play.api.mvc.ActionBuilder$$anonfun$apply$13.apply(Action.scala:370)
at play.api.mvc.Action$.invokeBlock(Action.scala:498)
Caused by: java.lang.ClassNotFoundException: org.slf4j.impl.Log4jLoggerAdapter
因爲有些我的系統的內部組件使用此日誌記錄。任何想法如何解決這個日誌依賴惡夢?
我有完全一樣的問題,但是當我試圖用coursier爲解決依賴它纔會發生。你是如何解決這個問題的? – SeDav