我正在尝试将我的日志显示在我的播放控制台中。以下是我尝试记录信息的控制器示例:
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"
答案 0 :(得分:1)
默认情况下,Play应用程序的日志级别为INFO
。
没有记录输出的原因可能与您的多个SLF4J绑定有关。
Play默认使用logback。显然,您在suredbits-core-assembly
项目中包含了(不同的?)SLF4J绑定。
Play配置logback记录器,但可能不是您正在使用的绑定的记录器。即使你已经包含两次logback,它也可能无法配置SLF4J最终使用的记录器,因为它有不同的类加载器。
您不应将任何SLF4J绑定定义为核心项目的依赖项:
http://www.slf4j.org/manual.html#libraries
诸如库或框架之类的嵌入式组件不应声明对任何SLF4J绑定的依赖性,而只依赖于slf4j-api。当库声明对特定绑定的传递依赖时,该绑定强加给最终用户否定SLF4J的目的。请注意,声明对绑定的非传递依赖性(例如,用于测试)不会影响最终用户。
因此,删除核心项目中对SLF4J绑定的依赖关系,或者至少在组装jar时排除org.slf4j.impl包。
答案 1 :(得分:0)
我认为您必须设置根记录器的级别:
logger.root=INFO