我有異步appender與bufferSize="512"
。log4j2:爲異步appender刷新記錄器緩衝區
在某些情況下,我需要強行刷新緩衝區。我怎樣才能做到這一點?
我不想關閉LogManager,所以LogManager.shutdown();
不是一個選項。
請幫忙!
更新:這是我log4j2.xml部分:
<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>
我有異步的appender內卡夫卡的appender。不幸的是,卡夫卡appender沒有異步appender具有immediateFlush字段。
我已更新我的問題。 –
對於Async appender,請查看:https://logging.apache.org/log4j/2.x/manual/async.html。 「異步Appender已經增強,可以在批處理結束時刷新到磁盤(當隊列爲空時),這與配置」immediateFlush = true「的結果相同,也就是說,所有接收到的日誌事件總是在磁盤上可用」 。這不完全是你想要的,但我認爲你可以做得更好。至於卡夫卡,我不確定... – Igor