2017-02-25 352 views
0

有很多微服务,他们都应该写日志到同一个graylog服务器。在每一个微服务中都使用了一个GelfLogbackAppender,它有几个设置,如主机,发布等。这些设置对于所有的服务都是一样的,我想把它们存储在一个地方,像一个spring配置服务器。我怎样才能做到这一点?我如何从配置服务器获取并使用GELF_ADDRESS?logback设置和spring配置服务器

<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 

它不工作,我总是看到DEBUG级别,如果我写

<property name="LEVEL" value="info"/> 

手动进入logback-spring.xml,级别会改变,但我想通过中央配置服务器来做到这一点

回答

0

定义配置服务器中应用程序特定属性中的GELF_ADDRESS属性,并尝试使用配置客户端配置相应的应用程序

按照本教程来设置配置服务器https://spring.io/guides/gs/centralized-configuration/ 和读取配置客户端属性

定义如下财产app.properties:

app.properties

GELF_ADDRESS=<<value to be set>> 

更新1:

我试着用样品。检查了这一点:https://github.com/BarathArivazhagan/Spring-Task-Sample/tree/master/Logback-configuration-configserver

+0

我已经使用配置服务器的微服务的其他设置,但是当我只是把GELF_ADDRESS:127.0.0.1进入一般application.yml这是进入配置服务器,然后它不起作用 – slippery

+0

提供你的代码进一步评论。另外检查在config客户端中形成的url上的日志以从配置服务器获取属性源,更重要的是将boot.cloud.config.uri放在bootstrap.yml中 – Barath

+0

我在我的文章中添加了一个新示例。 其他业务设置通常从配置服务器加载,我明白了。 – slippery