spring-boot - log4j2.xml 的 kafka appender 中的配置更改?
问题描述
我正在使用 log4j2 kafka appender 和 log4j2.xml 看起来像
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info" name="spring-boot-log-to-kafka-example" packages="com.ms.lib.infrastructure.eurekaservice">
<Appenders>
<Kafka name="kafkaAppender" topic="0v8uyhvb-logs">
<JSONLayout />
<Property name="bootstrap.servers">xyz.com:9094,xyz.com:9094,xyz.com:9094</Property>
<Property name="security.protocol">SASL_SSL</Property>
<Property name="sasl.mechanism">SCRAM-SHA-256</Property>
<Property name="sasl.jaas.config">org.apache.kafka.common.security.scram.ScramLoginModule required username="uname" password="pwd-gkB8qv4P";
</Property>
</Kafka>
<!--stdout/stderr included for testing Oozie log4j edits-->
<Console name="stdout" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5p [%-7t] %F:%L - %m%n"/>
</Console>
<Console name="stderr" target="SYSTEM_ERR">
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5p [%-7t] %F:%L - %m%n" />
<Filters>
<ThresholdFilter level="WARN" onMatch="ACCEPT" />
</Filters>
</Console>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="kafkaAppender"/>
<!--stdout/stderr included for testing Oozie log4j edits-->
<AppenderRef ref="stdout"/>
<AppenderRef ref="stderr"/>
</Root>
<Logger name="org.apache.kafka" level="warn" />
</Loggers>
</Configuration>
我想从配置服务器读取 kafka 连接详细信息,因为我正在使用 Spring Boot 和 Spring Cloud 开发微服务。我该如何进行?
解决方案
据我所知,您可以在 Log4J 配置中使用系统属性:: https${sys:some.property}
: //logging.apache.org/log4j/2.x/manual/configuration.html#PropertySubstitution
我认为在引导上下文中,从配置服务器读取属性后,您可以将 Kafka 连接的属性公开到系统属性中,这将可用于下游日志配置:https ://github.com/spring-cloud /spring-cloud-commons/blob/master/docs/src/main/asciidoc/spring-cloud-commons.adoc#the-bootstrap-application-context
推荐阅读
- spring-data-jpa - 使用 Spring Data JPA/Rest 的简单标记实现
- python - How do I handle a disconnect with python sockets? (ConnectionResetError)
- java - selenium WebDriver UrlChecker$TimeoutException,打开浏览器,然后从不导航到链接
- ios - 如何知道用户点击了 TextView 的哪一行
- php - phpMyAdmin 超时不考虑 PHP.ini max_execution_time
- android - 在 MacOS(10.15.7) 上,“颤振医生 --android-licenses”在哪里寻找“JAVA_HOME”?
- javascript - 仅对基于键的唯一属性值求和
- laravel - 在 laravel 中集中用户角色验证
- velo - 在 wix 中跟踪基于点击和选择的任务的最佳方法
- javascript - 如何在复选框单击时设置函数调用的条件