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에서 메시지가 손실 된 것을 본 적이 없습니다. 그 의미에서 나는 그것이 신뢰할 수 있다고 생각한다. 하지만 감사 로깅을 원한다면 최선의 노력으로 실패하지 않는 로깅 시스템이 아닌 다른 것을 사용해야한다고 생각합니다. (공격자가 디스크 공간을 가득 채워 로깅을 사용하지 않도록 설정 한 경우 감사 로그없이 사용자 인터페이스에서 모든 작업을 수행 할 수 있으며 디스크가 꽉 찼음을 알 수 있습니다.)
내 모든 질문은 모든 것이 정상적인 경우입니다. 따라서 충분한 디스크 공간이 있다고 가정 할 때 for 루프를 2 초 동안 잠자 지 않고 8 회 대신 10000 회 실행하면 항목 중 일부가 누락됩니까? – user983141
업데이트 된 답변을 확인하십시오. – palacsint