【发布时间】:2018-11-05 10:25:04
【问题描述】:
有没有办法通过环境变量来选择是否要使用 logback appender?
我有一个 dockerized spring boot 微服务,现在添加了 ELK 堆栈。
到目前为止效果很好。
但是现在如果我想在没有 ELK 堆栈的情况下启动我的服务,应用程序会抛出一个错误,它不知道 Logstash 的主机:
app | 10:09:23,537 |-ERROR in ch.qos.logback.classic.net.SyslogAppender[SYSLOG] - Could not create SyslogWriter java.net.UnknownHostException: logstash: Name or service not known
app | at java.net.UnknownHostException: logstash: Name or service not known
这是我的 logback.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
<syslogHost>logstash</syslogHost>
<port>5000</port>
<facility>LOCAL1</facility>
<suffixPattern>[%thread] %logger %msg</suffixPattern>
</appender>
<root level="INFO">
<appender-ref ref="SYSLOG"/>
</root>
</configuration>
我知道这是一个非常简单的版本,但我是使用 logback/ELK 堆栈进行日志记录的新手。
那么有没有办法用环境变量注入一些东西,比如在 yaml 文件中,例如active=${LOGBACK_ACTIVE:false} 我可以用我的 prometheus 指标来做到这一点吗?
【问题讨论】:
-
不,问题不是,应用程序找不到 Logstash 的主机。问题是,我只想启动应用程序,没有ELK堆栈(所以没有logstash的主机^^)
标签: spring-boot logging docker-compose logback elastic-stack