2015-01-19 2 views
1

2.3.6 프레임 워크를 사용하고 사용자 정의 XML 구성 파일로 로깅 출력을 설정했습니다. 여기PlayFramework, 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 -> playLogger -> applicationLogger -> my loggers라고 생각합니다. 놀이와 응용 프로그램 로거가 하나의 로거가 될 수없는 이유

package actors 

import akka.actor.Props 
import play.api.Logger 

object MainCtrl { 

    val log = Logger("actors.stat.MainCtrl") 

이해가 안

답변

0

의 차이는 하나 (당신의 출력을 제어하지 않는 프레임 워크 "재생"의 로거 때문이다 이 레벨을 설정할 수 있습니다.) 그리고 다른 하나는 실제 응용 프로그램의 로거입니다.

"재생"로거에서 appender를 제거해보십시오.

0

출력 파일에 행이 중복되는 이유는 어 펜더 누적입니다. accourding 구성 문서 logback하는 기본적으로

가 펜더 누적되는 : 로거 자체 (만약 있다면)뿐만 아니라, 그 선조에 연결된 모든 펜더에 부착 펜더에 기록한다. 따라서 동일한 appender를 여러 로거에 연결하면 로깅 출력이 중복됩니다.

관련 문제