Play框架(2.3.7)不使用我的logback配置

时间:2017-07-28 17:56:43

标签: scala playframework

我正在使用Play 2.3.7

我在这里阅读了文档

https://www.playframework.com/documentation/2.3.x/SettingsLogger

我在conf目录

下创建了一个名为application-logger.xml(和logger.xml)的文件
<configuration>
    <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />
    <conversionRule conversionWord="coloredLevel" converterClass="play.api.Logger$ColoredLevel" />

    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>${application.home}/logs/foo.log</file>
        <encoder>
            <pattern>%date - [%level] - from %logger in %thread %n%message%n%xException%n</pattern>
        </encoder>
    </appender>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%coloredLevel %logger{15} - %message%n%xException{5}</pattern>
        </encoder>
    </appender>

    <logger name="play" level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </logger>

    <logger name="application" level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </logger>

    <root level="off" />

</configuration>

现在我运行我的播放应用程序activator clean run,如果出现错误,它不会在控制台上打印任何内容。没有创建文件'foo.log'。

基于我对文档的阅读,我认为我的所有应用程序代码都将使用一个名为“application”的记录器,而play internal会使用一个名为“play”的记录器,所以如果我为这两个记录器定义了appender,我会拥有一切在控制台和我的文件上。

但这似乎并没有发生。

我已将application-logger.xml文件放在application.conf文件旁边的conf目录中。

我也尝试将我的文件重命名为logger.xml,但它仍被忽略。

编辑::

我甚至尝试像

一样运行我的应用程序
./activator -Dlogger.resource=logger.xml run
./activator -Dlogger.file=./conf/logger.xml run

但没有什么可以让play框架获取该文件。什么都没有。

3 个答案:

答案 0 :(得分:0)

我能在这里找到解决方案

https://www.reddit.com/r/scala/comments/6q6vb3/why_is_it_such_a_big_deal_for_play_framework_to/

基本上,在启动应用程序时,请使用logback配置设置

所以activator -Dlogback.configurationFile=logger.xml运行`

播放文档设置-Dlogger.resource-Dlogger.file不起作用。

答案 1 :(得分:0)

我从IntelliJ运行它,并使用 -Dlogger.resource=logback-test.xml工作顺利。

答案 2 :(得分:0)

自定义ApplicationLoader可能就是这种情况,它需要使用更新加载

LoggerConfigurator(context.environment.classLoader).foreach {
  _.configure(context.environment, context.initialConfiguration, Map.empty)
}

https://www.playframework.com/documentation/2.6.x/SettingsLogger#Using-a-custom-application-loader