I have a log4j2.XML as below:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="ConsoleAppender" target="SYSTEM_OUT">
<PatternLayout pattern="%date %-5level %logger - %msg"/>
</Console>
<Kafka name="KafkaAppender" topic="cdf-databricks-log">
<JsonTemplateLayout eventTemplateUri="classpath:JsonLayout.json">
<EventTemplateAdditionalField key="info" format="JSON" value='{"$resolver": "map"}' />
</JsonTemplateLayout>
<Property name="bootstrap.servers">${env:KAFKA_HOST}:${env:KAFKA_PORT}</Property>
<Property name="security.protocol">SASL_SSL</Property>
<Property name="sasl.mechanism">PLAIN</Property>
<Property name="sasl.jaas.config">org.apache.kafka.common.security.plain.PlainLoginModule required username="${env:KAFKA_USER}" password="${env:KAFKA_PASSWD}";</Property>
</Kafka>
<Async name="AsyncAppender">
<AppenderRef ref="KafkaAppender"/>
</Async>
</Appenders>
<Loggers>
<Root>
<AppenderRef ref="ConsoleAppender" level="ALL"/>
<AppenderRef ref="KafkaAppender" level="INFO"/>
</Root>
<!-- Do not let org.apache.kafka log to a Kafka appender on DEBUG level. That will cause recursive logging -->
<Logger name="org.apache.kafka" level="WARN" />
</Loggers>
</Configuration>
I want all the logs to be directed to Console an only the INFO logs to be directed to Kafka.
When I use the application, I do not see the logs being written to the console.
I have found that writing dedicated logger nodes based on class/ package name like below works. But I have a requirement to make this Log4j2.xml a reusable component and that’s why I do not want an individual class name present here.
<Logger name="com.abc.xxx.Someclassname" level="INFO" additivity="false">
<AppenderRef ref="ConsoleAppender"/>
<AppenderRef ref="KafkaAppender"/>
</Logger
Any suggestions where I am going wrong in the first log4j2.xml?