在我的conf/application.conf
我将我的应用程序的日志记录级别设置为DEBUG
。将日志记录级别设置为在Playframework 2.0生产中进行调试?
logger.application=DEBUG
这工作正常,当我sbt run
我的申请。但是,当我使用sbt start
以生产模式运行它时,日志级别会被覆盖到INFO
。
有没有一种方法可以强制播放使用DEBUG
作为生产中运行时的日志级别?
在我的conf/application.conf
我将我的应用程序的日志记录级别设置为DEBUG
。将日志记录级别设置为在Playframework 2.0生产中进行调试?
logger.application=DEBUG
这工作正常,当我sbt run
我的申请。但是,当我使用sbt start
以生产模式运行它时,日志级别会被覆盖到INFO
。
有没有一种方法可以强制播放使用DEBUG
作为生产中运行时的日志级别?
您有two different loggers:play
记录器和application
记录器。 这里是发展模式logger.xml的例子:
<configuration>
<conversionRule conversionWord="coloredLevel" converterClass="play.api.Logger$ColoredLevel" />
<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" />
<logger name="application" level="DEBUG" />
<root level="ERROR">
<appender-ref ref="STDOUT" />
</root>
</configuration>
这里播放记录器设置日志级别>信息和应用程序日志中记录(做Logger.debug/warn/error
当你使用一个)设定日志级别> DEBUG。根级别是所有记录器的默认级别,但是由于每个记录器都定义了自己的级别,因此不需要。
您可以使用以下命令创建prod-logger.xml文件并以prod模式启动应用程序:start -Dlogger.resource=conf/prod-logger.xml
。
以下是我用于具有两个appender的生产服务器的配置,用于将level> DEBUG存储在文件中,并在另一个文件中存储level> WARN。还有一个TimeBasedRollingPolicy让文件每天滚动。
<configuration>
<appender name="FILE_DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${application.home}/logs/debug_log.log</file>
<encoder>
<pattern>%date - [%level] - from %logger in %thread %n%message%n%xException%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${application.home}/logs/debug_log.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
<appender name="FILE_WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${application.home}/logs/warn_log.log</file>
<encoder>
<pattern>%date - [%level] - from %logger in %thread %n%message%n%xException%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${application.home}/logs/warn_log.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>60</maxHistory>
</rollingPolicy>
</appender>
<logger name="play" level="INFO"/>
<logger name="application" level="INFO" />
<root level="WARN">
<appender-ref ref="FILE_DEBUG"/>
<appender-ref ref="FILE_WARN"/>
</root>
</configuration>
有关记录的配置更详细的看一下Logback
这工作,但我还是不明白,为什么在生产application.conf“logger.application = DEBUG”被忽略。 –
准确地说,您并未将调试消息存储在FILE_DEBUG appender中,因为根和应用程序都设置为级别INFO和WARN,不允许调试日志级别。为了实现你的建议,我必须在'root level =“DEBUG''和 中改变'root level ='WARN''在。无论如何,谢谢你非常有帮助的例子! –