【问题标题】:With Scala 2.10.2, SBT 0.13.0, Specs2 & Play Framework 2.2.1 how can I control logging whilst running tests?使用 Scala 2.10.2、SBT 0.13.0、Specs2 和 Play Framework 2.2.1 如何在运行测试时控制日志记录?
【发布时间】:2013-12-14 14:25:25
【问题描述】:

我对 Play 2 框架 Scala 应用程序使用的不同日志框架感到非常困惑 - 即使经过反复试验,我也没有找到一种方法来在使用 ' 运行应用程序之间提供单独的日志配置文件运行”和“测试”。

我们的应用程序使用play.api.Logger 实例来输出日志。我们还有其他各种播放插件,它们似乎是直接通过 logback 输出的。

到目前为止,我们一直在使用单个 conf/logger.xml(这是 logback 配置对吗?)文件成功控制日志输出。这会设置两个带有模式的附加程序并控制输出级别。通过'run' 执行应用程序时绝对没有问题。

如果我尝试提供替代的 conf/logger-test.xml 文件 - 使用 'test' 运行会忽略它。我试过这样做:

testOptions in Test ++= Seq(
        Tests.Setup(() => {
            println("Setting logger to logger-test.xml")
            System.setProperty("logger.file", "conf/logger-test.xml")
        })
    ),

Build.scala,但这不会影响任何事情。

因此,为了了解正在使用的不同组件,http://www.playframework.com/documentation/2.2.x/SettingsLogger 似乎表明 a) play 实际上是在内部使用单独的日志框架,b) 然后将其推送到 logback。我不知道如何判断哪些实现被破坏了。

谁能帮助我了解 play 2 日志记录在这方面的工作原理,并通过它帮助我解决我的特定问题?从一些谷歌搜索来看,在使用'dist' 时,日志配置似乎也可能存在问题,但我还没有。

编辑:

我想知道this 是否有问题?还没有机会尝试。

【问题讨论】:

    标签: unit-testing scala logging playframework playframework-2.2


    【解决方案1】:

    我记得在同样的问题上苦苦挣扎。基本上,在运行测试时,我找不到 Play!使用不同的记录器配置。我最终找到了一种方法:我有 conf/logger.xml 用于我的生产代码,我添加了 /test/resources/logger-text.xml 以在运行测试时配置我的记录器。

    我的日志配置文件遵循 logback 语法进行配置。希望对您有所帮助。

    【讨论】:

    • 抱歉,应该是test/resources/logger-test.xml 吗?这是否需要任何进一步的配置才能工作,还是按惯例?有关该机制的文档的任何指针?我正在尝试了解所有这些是如何工作的,以便将来可以帮助自己:)
    • 这似乎是一个约定俗成的事情,因为我没有更改任何其他内容。我没有关于它的任何文档,只是尝试过并且它有效:) 我猜位于test/resources/ 的配置优先于conf 中的配置。
    • 我已经开始使用 Play 2.5,但这对我不起作用。我想知道它是否不再起作用。我能够将.settings(javaOptions in Test += "-Dlogger.file=test/resources/logback-test.xml") 添加到我的构建配置中,并且仍然有效。
    猜你喜欢
    • 1970-01-01
    • 2013-11-19
    • 2016-05-20
    • 2014-04-12
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2013-12-30
    相关资源
    最近更新 更多