Issue
I have a Spring-Boot app that is using LogBack logging. In the logging I have configured an Apache Kafka appender. It is working fine.
But the problem is I have already a log output in the @PostConstruct method of a Bean.
As far I see the init of the Kafka appender (connect to Kafka) is not that quick as the init of the Bean. So my 1st log output for "Bean is initialized" in the @PostConstruct method of the bean is lost (sometimes).
@PostConstruct
void afterInit () throws Exception
{
Logger logger = LoggerFactory.getLogger ("tokafka");
logger.info ("started");
}
Here is my appender config for LogBack.
<appender name="KAFKA" class="com.github.danielwegener.logback.kafka.KafkaAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>{"time": "%d{HH:mm:ss.SSS}", "level": "%-5level", "text": "%msg"}</pattern>
</encoder>
<topic>asx</topic>
<keyingStrategy class="com.github.danielwegener.logback.kafka.keying.NoKeyKeyingStrategy"/>
<deliveryStrategy class="com.github.danielwegener.logback.kafka.delivery.AsynchronousDeliveryStrategy"/>
<producerConfig>bootstrap.servers=localhost:9092</producerConfig>
<producerConfig>acks=0</producerConfig>
<producerConfig>linger.ms=100</producerConfig>
<producerConfig>max.block.ms=100</producerConfig>
<producerConfig>buffer.memory=200000</producerConfig>
</appender>
<logger name="tokafka" level="INFO">
<appender-ref ref="KAFKA" />
</logger>
Any idea how I can overcome that??
Solution
Increased max.block.ms to 1000 and it is working as expected.
Answered By - chris01
Answer Checked By - Clifford M. (JavaFixing Volunteer)