有许多微服务,它们都应该将日志写入同一个灰日志服务器。在每个微服务中都使用了一个GelfLogbackAppender,它有主机、post等几个设置。这些设置对于所有服务都是相同的,我想把它们存储在一个地方,就像spring配置服务器一样。我怎么能这么做?如何从配置服务器获取和使用GELF_ADDRESS?
<appender name="gelf" class="biz.paluch.logging.gelf.logback.GelfLogbackAppender">
<host>udp:${GELF_ADDRESS}</host>
<port>${GELF_PORT}</port>UPDATE我决定给出我想要的简单例子,让我们想象一下,我想通过配置服务器来改变所有微服务的日志级别。我做下一件事:
logback-spring.xml
<configuration>
<property name="LEVEL" value="${log_level}"/>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
<root level="${LEVEL}">
<appender-ref ref="CONSOLE"/>
</root>
</configuration>application.yml位于配置服务器中。
eureka:
client:....
feign:
hystrix:....
log_level: info它不起作用,我总是看到调试级别,如果我编写
<property name="LEVEL" value="info"/> ,这个级别将被更改,但是我想通过中央配置服务器来实现这一点。
发布于 2020-08-28 16:17:19
具体的问题似乎是关于通过设置的灰日志URL。我发现graylog会在启动时立即设置该值,但是可以在logback配置中设置一个属性,以便在启动后更新灰色日志属性。
https://www.baeldung.com/logback
上述链接的6.4节描述了自动重新加载日志配置。特别是对配置标记上的扫描属性的需要。
简而言之,您可以设置您的配置来扫描更新,这将允许logback在启动后也可以使用config属性。(注意:如果您将配置标记设置为debug="true“,您将看到logback在config获取属性之前启动其配置。)
总之,xml应该如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true" scan="true" scanPeriod="1 minute">
<springProperty scope="context" name="GRAY_LOG_HOST" source="cloud.config.property.for.graylog.server" defaultValue="mygraylogdefault.com"/>
<appender name="TCP" class="de.siegmar.logbackgelf.GelfTcpAppender">
<graylogHost>${GRAY_LOG_HOST}</graylogHost>
<graylogPort>12201</graylogPort>
</appender>
<appender name="GELF" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="TCP" />
</appender>
<root level="warn">
<appender-ref ref="GELF"/>
</root>
</configuration>https://stackoverflow.com/questions/42458964
复制相似问题