日志未显示 Scala Play 2。3.x
Logs not showing up Scala Play 2.3.x
我正在尝试让我的日志显示在我的游戏控制台中。这是我尝试从中记录信息的控制器示例:
import play.api.Logger
object LandingPage extends Controller {
import ComponentRegistry._
private val emailForm =
Form(mapping("id" -> optional(of[Long]), "emailAddress" -> email)(Email.apply _)(Email.unapply _))
def index = Action {
Logger.info("Index method inside of LandingPage")
Ok("INDEX")
}
def submit = Action { implicit request =>
Logger.info("Inside of submit method in Landing Page controller")
Ok("SUBMIT PAGE")
}
}
这是我 application.conf
中的内容
#Logger provided to your application:
logger.application=INFO
我需要修改什么才能让日志中的输出显示在我的控制台中?
编辑:这可能是有用的信息。显然我有多个 slf4j 绑定
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/chris/dev/suredbits-web/lib/suredbits-core-assembly-1.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/chris/.ivy2/cache/ch.qos.logback/logback-classic/jars/logback-classic-1.1.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
不确定如何摆脱这些多重绑定。
还有我的build.sbt
name := "suredbits-web"
version := "0.0"
lazy val root = (project in file(".")).enablePlugins(play.PlayScala, SbtWeb)
scalaVersion := "2.11.4"
organization := "com.suredbits.web"
libraryDependencies ++= {
val sprayV = "1.3.2"
val akkaV = "2.3.8"
val bootstrapV = "3.3.2"
val webJarsPlayV = "2.3.0"
Seq(
"io.spray" %% "spray-can" % sprayV withSources() withJavadoc(),
"io.spray" %% "spray-routing" % sprayV withSources() withJavadoc(),
"io.spray" %% "spray-testkit" % sprayV % "test" withSources() withJavadoc(),
"com.typesafe.akka" %% "akka-actor" % akkaV withSources() withJavadoc(),
"com.typesafe.akka" %% "akka-testkit" % akkaV % "test" withSources() withJavadoc(),
"org.specs2" %% "specs2-core" % "2.4.7-scalaz-7.0.6" % "test" withSources() withJavadoc(),
"org.scalactic" %% "scalactic" % "2.2.1" % "test" withSources() withJavadoc(),
"io.spray" %% "spray-json" % "1.3.0" withSources() withJavadoc(),
"com.github.nscala-time" %% "nscala-time" % "1.6.0" withSources() withJavadoc() ,
"com.novocode" % "junit-interface" % "0.10" % "test" withSources() withJavadoc(),
"org.webjars" %% "webjars-play" % webJarsPlayV withSources() withJavadoc(),
"org.webjars" % "bootstrap" % bootstrapV withSources() withJavadoc(),
"org.webjars" % "font-awesome" % "4.3.0-1",
"org.webjars" % "jquery" % "2.1.3",
"com.typesafe.slick" %% "slick" % "2.1.0" withSources() withJavadoc(),
"com.typesafe.slick" %% "slick-testkit" % "2.1.0" % "test" withSources() withJavadoc(),
"org.postgresql" % "postgresql" % "9.3-1100-jdbc41" withSources() withJavadoc(),
"org.scalatestplus" %% "play" % "1.2.0" % "test" withSources() withJavadoc()
)
}
testOptions += Tests.Argument(TestFrameworks.JUnit, "-q", "-v", "-s", "-a")
parallelExecution in Test := false
scalacOptions ++= Seq("-unchecked", "-deprecation", "-feature")
includeFilter in (Assets, LessKeys.less) := "*.less"
我认为您必须设置根记录器的级别:
logger.root=INFO
Play 应用程序的日志级别默认为 INFO
。
没有日志输出的原因可能与您的多个 SLF4J 绑定有关。
Play默认使用logback。显然您在 suredbits-core-assembly
项目中包含了一个(不同的?)SLF4J 绑定。
Play 配置 logback 记录器,但可能不是您正在使用的绑定的记录器。即使你包含了 logback 两次,它也可能不会配置 SLF4J 最终使用的记录器,因为不同的 class 加载器。
您不应将任何 SLF4J 绑定定义为核心项目的依赖项:
http://www.slf4j.org/manual.html#libraries
Embedded components such as libraries or frameworks should not declare a dependency on any SLF4J binding but only depend on slf4j-api. When a library declares a transitive dependency on a specific binding, that binding is imposed on the end-user negating the purpose of SLF4J. Note that declaring a non-transitive dependency on a binding, for example for testing, does not affect the end-user.
因此,在您的核心项目中移除对 SLF4J 绑定的依赖,或者至少在组装您的 jar 时排除 org.slf4j.impl 包。
我正在尝试让我的日志显示在我的游戏控制台中。这是我尝试从中记录信息的控制器示例:
import play.api.Logger
object LandingPage extends Controller {
import ComponentRegistry._
private val emailForm =
Form(mapping("id" -> optional(of[Long]), "emailAddress" -> email)(Email.apply _)(Email.unapply _))
def index = Action {
Logger.info("Index method inside of LandingPage")
Ok("INDEX")
}
def submit = Action { implicit request =>
Logger.info("Inside of submit method in Landing Page controller")
Ok("SUBMIT PAGE")
}
}
这是我 application.conf
#Logger provided to your application:
logger.application=INFO
我需要修改什么才能让日志中的输出显示在我的控制台中?
编辑:这可能是有用的信息。显然我有多个 slf4j 绑定
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/chris/dev/suredbits-web/lib/suredbits-core-assembly-1.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/chris/.ivy2/cache/ch.qos.logback/logback-classic/jars/logback-classic-1.1.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
不确定如何摆脱这些多重绑定。
还有我的build.sbt
name := "suredbits-web"
version := "0.0"
lazy val root = (project in file(".")).enablePlugins(play.PlayScala, SbtWeb)
scalaVersion := "2.11.4"
organization := "com.suredbits.web"
libraryDependencies ++= {
val sprayV = "1.3.2"
val akkaV = "2.3.8"
val bootstrapV = "3.3.2"
val webJarsPlayV = "2.3.0"
Seq(
"io.spray" %% "spray-can" % sprayV withSources() withJavadoc(),
"io.spray" %% "spray-routing" % sprayV withSources() withJavadoc(),
"io.spray" %% "spray-testkit" % sprayV % "test" withSources() withJavadoc(),
"com.typesafe.akka" %% "akka-actor" % akkaV withSources() withJavadoc(),
"com.typesafe.akka" %% "akka-testkit" % akkaV % "test" withSources() withJavadoc(),
"org.specs2" %% "specs2-core" % "2.4.7-scalaz-7.0.6" % "test" withSources() withJavadoc(),
"org.scalactic" %% "scalactic" % "2.2.1" % "test" withSources() withJavadoc(),
"io.spray" %% "spray-json" % "1.3.0" withSources() withJavadoc(),
"com.github.nscala-time" %% "nscala-time" % "1.6.0" withSources() withJavadoc() ,
"com.novocode" % "junit-interface" % "0.10" % "test" withSources() withJavadoc(),
"org.webjars" %% "webjars-play" % webJarsPlayV withSources() withJavadoc(),
"org.webjars" % "bootstrap" % bootstrapV withSources() withJavadoc(),
"org.webjars" % "font-awesome" % "4.3.0-1",
"org.webjars" % "jquery" % "2.1.3",
"com.typesafe.slick" %% "slick" % "2.1.0" withSources() withJavadoc(),
"com.typesafe.slick" %% "slick-testkit" % "2.1.0" % "test" withSources() withJavadoc(),
"org.postgresql" % "postgresql" % "9.3-1100-jdbc41" withSources() withJavadoc(),
"org.scalatestplus" %% "play" % "1.2.0" % "test" withSources() withJavadoc()
)
}
testOptions += Tests.Argument(TestFrameworks.JUnit, "-q", "-v", "-s", "-a")
parallelExecution in Test := false
scalacOptions ++= Seq("-unchecked", "-deprecation", "-feature")
includeFilter in (Assets, LessKeys.less) := "*.less"
我认为您必须设置根记录器的级别:
logger.root=INFO
Play 应用程序的日志级别默认为 INFO
。
没有日志输出的原因可能与您的多个 SLF4J 绑定有关。
Play默认使用logback。显然您在 suredbits-core-assembly
项目中包含了一个(不同的?)SLF4J 绑定。
Play 配置 logback 记录器,但可能不是您正在使用的绑定的记录器。即使你包含了 logback 两次,它也可能不会配置 SLF4J 最终使用的记录器,因为不同的 class 加载器。
您不应将任何 SLF4J 绑定定义为核心项目的依赖项:
http://www.slf4j.org/manual.html#libraries
Embedded components such as libraries or frameworks should not declare a dependency on any SLF4J binding but only depend on slf4j-api. When a library declares a transitive dependency on a specific binding, that binding is imposed on the end-user negating the purpose of SLF4J. Note that declaring a non-transitive dependency on a binding, for example for testing, does not affect the end-user.
因此,在您的核心项目中移除对 SLF4J 绑定的依赖,或者至少在组装您的 jar 时排除 org.slf4j.impl 包。