2017-01-14 1 views
3

가 참조 :여러 루트 로거

<configuration debug="true"> 
    <if condition='property("HOSTNAME").contains("torino")'> 
    <then> 
     <appender name="CON" class="ch.qos.logback.core.ConsoleAppender"> 
     <encoder> 
      <pattern>%d %-5level %logger{35} - %msg %n</pattern> 
     </encoder> 
     </appender> 
     <root> <------ root logger #1 
     <appender-ref ref="CON" /> 
     </root> 
    </then> 
    </if> 

    <appender name="FILE" class="ch.qos.logback.core.FileAppender"> 
    <file>${randomOutputDir}/conditional.log</file> 
    <encoder> 
     <pattern>%d %-5level %logger{35} - %msg %n</pattern> 
    </encoder> 
    </appender> 

    <root level="ERROR"> <------ root logger #2 
    <appender-ref ref="FILE" /> 
    </root> 
</configuration> 

: 조건문을 논의 할 때 Logback's Configuration

내 구성이 동일한 문서의 뒷부분에 다음 ...at most one <root> element...

을 포함 할 수 있지만, 나는이 참조 두 개의 <root> 요소가 있습니다. 나는 어떤 <else> 요소도 보이지 않기 때문에 매우 혼란 스러우며, 호스트 이름이 "토리노"인 경우에도 FILE appender와 두 번째 루트 로거가 여전히 작동한다고 가정합니다.

이것은 어떻게 유효한 예입니까? 이 경우 두 개의 <root> 로거가 허용되는 이유는 <if> 또는 <else>

무엇이 누락 되었습니까 ???

+0

엄격한 XML 구문에 대해, 대부분 하나의 ''요소가''요소의 직접적인 하위 요소로 허용된다는 것을 말합니다. 다른 ''요소는 ''요소의 하위 요소이므로 XML 구문을 위반하지 않습니다. – Andreas

+0

@andreas는 여전히 루트 로거가 활성 상태라는 질문에 대답하지 않습니다. 하나는 다른 트럼프 또는 그들이 어떤 방법으로 병합 있습니까 ?? – Jason

+0

당신은 실제로 그 질문을하지 않았습니다. 문서가 "많아야 하나"라고되어 있더라도 두 개의 ''요소가 허용되는 이유는 무엇입니까? 나는 그 두 가지가 모두 유효하다고 말하고 싶다. 첫 번째 ''요소가'level' 속성을 가지고 있지 않은 것에 주목하십시오. 루트에 다른 appender를 추가하기 만하면됩니다. – Andreas

답변

4

면책 사항 : 나는 logback 프로젝트의 관리자입니다.

이것은 분명히 로그백 문서에서 설명 할 가치가 있습니다. http://jira.qos.ch에 버그 리포트를 제출해 주시겠습니까? 이 StackOverflow 항목을 참조하면 충분합니다.

루트 로거가 활성화되어있는 경우 조건부를 true로 가정하면 둘 다 활성화됩니다. FILE 및 CON이라는 두 appender가 루트 로거에 연결됩니다. 레벨은 마지막으로 설정된 값으로 설정됩니다. 조건 내의 루트 요소는 레벨을 설정하지 않습니다.

+0

는 Ceki를 수행합니다. 그것이라고 말했는지를 확인하기 위해 멋진 도서관에 감사드립니다! 나는 ""이 실제로 무엇을하고 있었는지 혼란스러워했다. @ Andreas의 설명에 감사드립니다. – Jason