playframework - 使用 logback.groovy 配置 Play Framework 日志记录

标签 playframework playframework-2.5 logback-groovy

是否可以使用 logback.groovy 而不是 logback.xml 配置 2.5 PlayFramework 日志记录?

我的类路径中有 logback.groovy。我知道这是有效的,因为它最初加载时没有错误,甚至创建了空日志文件。

Play 然后重新初始化记录器。如果我启动激活器并执行

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

我在尝试加载网页时遇到错误:

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)

鉴于错误消息引用了解析 XML 的错误,Play 似乎假设文件是​​ XML。有没有一种方法可以使用 groovy 文件配置登录 Play?

我想我可以第三次重新初始化日志记录,但必须有更好的方法。

最佳答案

我已经在这里回答了你的问题:

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

我会在这里补充说你可以使用你可以使用 LogbackLoggerConfigurator作为编写您自己的起点,因为它已经处理了大部分集成陷阱。

关于playframework - 使用 logback.groovy 配置 Play Framework 日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38531771/

相关文章:

java - 无法在 Play 框架中加载项目

scala - 如何确保 Play! 中文件上传的安全框架(斯卡拉)

java - 如何使 Log4j 环境特定

java - 在 groovy 中使用 Logback 和 RollingFilePolicy

apache-spark - Spark 2.0 与 Play! 2.5

java - 如何使用 groovy 配置文件激活 "Logback setup" Debug模式?

java - 手动调用PlayFramework自定义错误页面

playframework - 在网络文件系统上使用 Play 框架自动重新加载

java - 使用 PlayFramework 发送邮件

javascript - 基于play框架的应用在 View 中添加css和js文件