在我的conf/application.conf
中,我将应用程序的日志记录级别设置为DEBUG
。
logger.application=DEBUG
当我用sbt run
运行我的应用程序时,它可以正常工作。但是,当我使用sbt start
以生产模式运行它时,日志级别被覆盖为INFO
。
有没有办法在生产环境中强制Play使用DEBUG
作为我的日志级别?
在我的conf/application.conf
中,我将应用程序的日志记录级别设置为DEBUG
。
logger.application=DEBUG
当我用sbt run
运行我的应用程序时,它可以正常工作。但是,当我使用sbt start
以生产模式运行它时,日志级别被覆盖为INFO
。
有没有办法在生产环境中强制Play使用DEBUG
作为我的日志级别?
您拥有两个不同的日志记录器: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>
这里将play日志记录器设置为大于INFO的日志级别,而应用程序日志记录器(您在执行Logger.debug/warn/error
时使用的日志记录器)设置为大于DEBUG的日志级别。根级别是所有记录器的默认级别,但由于每个记录器定义了自己的级别,因此不需要它。
您可以创建一个prod-logger.xml文件,并使用以下方式以生产模式启动您的应用程序:start -Dlogger.resource=conf/prod-logger.xml
。
这是我在生产服务器上使用的配置,有两个附加器用于存储大于DEBUG级别的日志到一个文件中,另一个文件存储大于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