3

Is it possible to configure the 2.5 PlayFramework logging using a logback.groovy instead of a logback.xml?

I have logback.groovy on my classpath. I know this is valid, because it is initially loaded without errors and even creates empty log files.

Play then reinitializes the logger. If I start activator and do

[myProj] $ run -Dlogger.resource=/logback.groovy 9999

I get an error trying to load a web page:

ch.qos.logback.core.joran.spi.JoranException: Problem parsing XML document. See previously reported errors.
     ch.qos.logback.core.joran.event.SaxEventRecorder.recordEvents(SaxEventRecorder.java:67)
     ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:134)
     ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:99)
     ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:49)
     play.api.libs.logback.LogbackLoggerConfigurator.configure(LogbackLoggerConfigurator.scala:91)
     play.api.libs.logback.LogbackLoggerConfigurator.configure(LogbackLoggerConfigurator.scala:59)
     play.api.inject.guice.GuiceApplicationBuilder$$anonfun$applicationModule$1.apply(GuiceApplicationBuilder.scala:102)
     play.api.inject.guice.GuiceApplicationBuilder$$anonfun$applicationModule$1.apply(GuiceApplicationBuilder.scala:102)
     scala.Option.foreach(Option.scala:257)
     play.api.inject.guice.GuiceApplicationBuilder.applicationModule(GuiceApplicationBuilder.scala:101)
     play.api.inject.guice.GuiceBuilder.injector(GuiceInjectorBuilder.scala:181)
     play.api.inject.guice.GuiceApplicationBuilder.build(GuiceApplicationBuilder.scala:123)
     play.api.inject.guice.GuiceApplicationLoader.load(GuiceApplicationLoader.scala:21)
     play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1$$anonfun$2.apply(DevServerStart.scala:158)
     play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1$$anonfun$2.apply(DevServerStart.scala:155)
     play.utils.Threads$.withContextClassLoader(Threads.scala:21)
     play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(DevServerStart.scala:155)
     play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(DevServerStart.scala:126)
     scala.Option.map(Option.scala:146)
     play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(DevServerStart.scala:126)
     play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(DevServerStart.scala:124)
     scala.util.Success.flatMap(Try.scala:231)
     play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(DevServerStart.scala:124)
     play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(DevServerStart.scala:116)
     scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
     scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
     java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
     java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
     java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
     java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
     java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

Given that the error message references an error parsing XML, it seems like Play is assuming the file is XML. Is there a way to configure logging in Play with a groovy file?

I suppose I could reinitialize logging a third time, but there must be a better way.

Troy Daniels
  • 3,270
  • 2
  • 25
  • 57

1 Answers1

0

I've answered your question here:

https://github.com/playframework/playframework/issues/7767

I would add here that you can use that you can use LogbackLoggerConfigurator as a start point to write your own since it already handles most of the integration gotchas.

marcospereira
  • 12,045
  • 3
  • 46
  • 52