비동기 애플릿에 bufferSize="512"
이 있습니다.log4j2 : 비동기 애플릿에 대한 로거 버퍼 플러시
일부 상황에서는 강제로 버퍼를 플러시해야합니다. 어떻게해야합니까?
LogManager를 닫아야 할 대상이 없으므로 LogManager.shutdown();
은 옵션이 아닙니다.
도와주세요!
업데이트
:<Kafka name="Kafka" topic="logs-gexd-default">
<PatternLayout>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5p %C{1}:%L - %m%n</pattern>
</PatternLayout>
<Property name="bootstrap.servers">${kafkaAddress}</Property>
</Kafka>
<Async name="AsyncKafka" bufferSize="512" blocking="false">
<AppenderRef ref="Kafka"/>
</Async>
내가 비동기 펜더의 내부 카프카의 펜더가 : 여기 내 log4j2.xml의 일부입니다. 불행히도 Kafka appender는 비동기 appender가 아니라 immediateFlush 필드를가집니다.
질문이 업데이트되었습니다. –
Async appender의 경우 https://logging.apache.org/log4j/2.x/manual/async.html을 확인하십시오. "비동기 Appender는 배치가 끝날 때 (대기열이 비어있는 경우) 디스크로 플러시되도록 향상되었습니다. 즉,"immediateFlush = true "를 구성하는 것과 동일한 결과를 생성합니다. 즉, 수신 된 모든 로그 이벤트를 항상 디스크" . 그것은 당신이 찾고있는 것이 아니지만, 당신이 더 잘할 수 있다고 생각하지 않습니다. Kafka에 관해서, 나는 확실하지 않다. ... – Igor