Estoy intentando que mis registros aparezcan en mi consola de juegos. Aquí hay un ejemplo de un controlador del que estoy tratando de registrar información:

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")

  }
}

Esto es lo que tengo en mi application.conf

#Logger provided to your application:
logger.application=INFO

¿Qué necesito modificar para que la salida se muestre en mi consola a partir de los registros?

EDITAR: Esta podría ser información útil. Aparentemente tengo múltiples enlaces 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.

No estoy seguro de cómo deshacerse de estos múltiples enlaces.

También mi 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"
1
Chris Stewart 10 feb. 2015 a las 19:59

2 respuestas

La mejor respuesta

El nivel de registro de una aplicación Play ya es INFO de forma predeterminada.

La razón por la que no hay salida de registro probablemente tenga que ver con sus múltiples enlaces SLF4J.

Play usa logback de forma predeterminada. Aparentemente, ha incluido un enlace SLF4J (¿diferente?) En su proyecto suredbits-core-assembly.

Play configura el registrador de logback, pero probablemente no el registrador del enlace que estás usando. E incluso si ha incluido el logback dos veces, es posible que no configure el registrador que SLF4J eventualmente usa debido a los diferentes cargadores de clases.

No debe definir ningún enlace SLF4J como una dependencia de su proyecto principal:

http://www.slf4j.org/manual.html#libraries

Los componentes integrados, como bibliotecas o marcos, no deben declarar una dependencia de ningún enlace SLF4J, sino que solo dependen de slf4j-api. Cuando una biblioteca declara una dependencia transitiva en un enlace específico, ese enlace se impone al usuario final negando el propósito de SLF4J. Tenga en cuenta que declarar una dependencia no transitiva en un enlace, por ejemplo, para realizar pruebas, no afecta al usuario final.

Por lo tanto, elimine la dependencia del enlace SLF4J en su proyecto principal o al menos excluya el paquete org.slf4j.impl al ensamblar su jar.

1
cbley 17 feb. 2015 a las 14:12

Creo que tienes que configurar el nivel para el registrador raíz:

logger.root=INFO
0
Ionuț G. Stan 10 feb. 2015 a las 17:03