我有一个名为FrontEnd的Play项目,其依赖项是另一个名为Logic的项目。
在Logic项目的build.sbt
文件中,我添加了slf4j和logback:
name := "Logic"
version := "1.0-SNAPSHOT"
scalaVersion := "2.11.1"
seq(bintrayResolverSettings:_*)
libraryDependencies += "org.slf4j" % "slf4j-api" % "1.7.5"
libraryDependencies += "ch.qos.logback" % "logback-classic" % "1.1.2"
我还在Logic项目中创建了一个Logging特征
package logic.logging
import ch.qos.logback.classic.Logger
import org.slf4j.LoggerFactory
trait Logging {
protected val logger = LoggerFactory.getLogger(this.getClass().getSimpleName().stripSuffix("$"))
}
然后,我在FrontEnd项目中包含了Logic项目:
name := "Frontend"
version := "1.0"
scalaVersion := "2.11.1"
lazy val logicProj = RootProject(file("../logic"))
lazy val root = (project in file(".")).enablePlugins(PlayScala).dependsOn(logicProj)
最后,为了测试日志记录功能,我在FrontEnd
中创建了一个Global对象import play.api.GlobalSettings
import play.api.Application
import play.api.Logger
import logic.logging.Logging
object Global extends GlobalSettings with Logging {
override def onStart(app: Application) = {
logger.info("Logic's logger: Application is started!!!")
Logger.info("FrontEnd's logger: Application is started!!!")
}
}
控制台上的输出是:
[info] application - FrontEnd's logger: Application is started!!!
[info] play - Application started (Dev)
换句话说,logic.logging.Logging中的记录器无法登录到控制台。我想知道是否有人知道为什么以及如何解决它。
PS:根据this,它可能与多个绑定有关,即Logic中的Logback和FrontEnd的Play库中的logback。但是,我不想从Logic中删除logback,因为项目本身是一个独立的控制台应用程序,需要将输出记录到控制台。
修改:即使从Logic libraryDependencies += "ch.qos.logback" % "logback-classic" % "1.1.2"
中删除build.sbt
,问题仍然存在。
答案 0 :(得分:0)
最后,我发现日志没有显示,因为它没有"注册"播放日志配置。可以通过将以下行添加到configuration
文件的application-logger.xml
标记中来修复此问题:
<logger name="logger" level="INFO" />
然后,我更新Logging对象以在所有记录器中包含记录器前缀:
package logic.logging
import ch.qos.logback.classic.Logger
import org.slf4j.LoggerFactory
trait Logging {
protected val logger = LoggerFactory.getLogger("logger.%s".format(this.getClass().getSimpleName().stripSuffix("$")))
}
它的作用是输出:
[info] logger.Global - Logic's logger: Application is started!!!
[info] application - FrontEnd's logger: Application is started!!!