日志未显示Scala Play 2.3.x.

时间:2015-02-10 16:59:35

标签: scala playframework playframework-2.0 playframework-2.3

我正在尝试将我的日志显示在我的播放控制台中。以下是我尝试记录信息的控制器示例:

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"

2 个答案:

答案 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