我使用2.3.6 play框架,我已经使用自定义xml配置文件设置了日志输出。
这是:
<conversionRule conversionWord="coloredLevel" converterClass="play.api.Logger$ColoredLevel" />
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${user.dir}/logs/application.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- Daily rollover with compression -->
<fileNamePattern>application-%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- keep 30 days worth of history -->
<maxHistory>5</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%date{yyyy-MM-dd HH:mm:ss ZZZZ} - [%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>
<root level="ERROR">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
<logger name="play" level="DEBUG">
<appender-ref ref="STDOUT" />
</logger>
<logger name="application" level="DEBUG">
<appender-ref ref="STDOUT" />
</logger>
<logger name="actors" level="DEBUG"/>
<logger name="models" level="DEBUG"/>
<logger name="com.avaje.ebean.config.PropertyMapLoader" level="OFF" />
<logger name="com.avaje.ebeaninternal.server.core.XmlConfigLoader" level="OFF" />
<logger name="com.avaje.ebeaninternal.server.lib.BackgroundThread" level="OFF" />
<logger name="com.gargoylesoftware.htmlunit.javascript" level="OFF" />
<logger name="com.google.api.client.http.HttpTransport" level="OFF"/>
使用这种配置,我的输出线加倍,我的意思是:
[info] play - database [default] connected at jdbc:postgresql://1.1.1.1/project.dev
[info] play - database [default] connected at jdbc:postgresql://1.1.1.1/project.dev
[info] play - Application started (Dev)
[info] play - Application started (Dev)
你能解释一下为什么吗?
我没有得到播放记录器和应用程序记录器之间的区别。 我认为层次结构是rootLogger - &gt; playLogger - &gt; applicationLogger - &gt;我的记录器。
package actors
import akka.actor.Props
import play.api.Logger
object MainCtrl {
val log = Logger("actors.stat.MainCtrl")
我不明白为什么播放和应用程序记录器不能只是一个记录器
答案 0 :(得分:0)
不同之处在于,一个是框架“Play”的记录器(你不能控制它的输出,你只需设置级别),另一个是实际应用程序的记录器。
尝试从“播放”记录器中删除appender。
答案 1 :(得分:0)
输出文件中重复行的原因是Appenders累积。 参与logback配置文档:
默认情况下,appender是累积的:记录器将记录附加到自身的appender(如果有的话)以及附加到其祖先的所有appender。因此,将同一个appender附加到多个记录器将导致日志记录输出重复。