2011-10-06 6 views
2

Log4j는 다음과 같은 자주 묻는 질문에 따라 신뢰할 수 없습니다 ". 번호 log4j를 신뢰할 수 없습니다 그것은 최선의 노력 장애 정지를 로깅 시스템입니다." http://logging.apache.org/log4j/1.2/faq.html#a1.2Logback 신뢰성

Logback이 더 안정적입니까? 매우 짧은 기간에 1000 개의 로그 메시지 (예를 들어)가 logback을 사용하여 기록 될 때 몇 개의 메시지가 자동으로 누락 될 수 있습니다. 감사합니다, Sunil

답변

0

Logback 또한 최선의 노력으로 fail-stop 로깅 시스템이라고 생각합니다. FileAppender

for (int i = 0; i < 8; i++) { 
    System.out.println("log " + i); 
    logger.info("log {}", i); 
    Thread.sleep(2000); 
} 

:이 코드를 실행

<appender name="file" class="ch.qos.logback.core.FileAppender"> 
    <file>/mnt/logtest/testlog.log</file> 
    <append>false</append> 
    <encoder> 
     <pattern>%d [%thread] %level %mdc %logger{35} - %msg%n</pattern> 
    </encoder> 
</appender> 

를 여유 공간이없는 디스크에. 그런 다음 오류없이 실행됩니다. 몇 초 후에 디스크에서 일부 파일을 삭제했습니다. 파일의 log 4 라인 -

2011-10-07 08:19:01,687 [main] INFO logbacktest.LoopLog - log 5 
2011-10-07 08:19:03,688 [main] INFO logbacktest.LoopLog - log 6 
2011-10-07 08:19:05,688 [main] INFO logbacktest.LoopLog - log 7 

log 0 없습니다 다음 testlog.log 파일의 내용이었다. 나는 다른 애펜더가 더 안정적이라고 생각하지 않을 것이다.


정상적인 작동 조건 (예 : 시스템에 충분한 디스크 공간이 있음)에서는 Logback에서 메시지가 손실 된 것을 본 적이 없습니다. 그 의미에서 나는 그것이 신뢰할 수 있다고 생각한다. 하지만 감사 로깅을 원한다면 최선의 노력으로 실패하지 않는 로깅 시스템이 아닌 다른 것을 사용해야한다고 생각합니다. (공격자가 디스크 공간을 가득 채워 로깅을 사용하지 않도록 설정 한 경우 감사 로그없이 사용자 인터페이스에서 모든 작업을 수행 할 수 있으며 디스크가 꽉 찼음을 알 수 있습니다.)

+0

내 모든 질문은 모든 것이 정상적인 경우입니다. 따라서 충분한 디스크 공간이 있다고 가정 할 때 for 루프를 2 초 동안 잠자 지 않고 8 회 대신 10000 회 실행하면 항목 중 일부가 누락됩니까? – user983141

+0

업데이트 된 답변을 확인하십시오. – palacsint