异常信息如下:
Could not invoke method addDestination in class net.logstash.logback.appender.LogstashTcpSocketAppender with parameter of type java.lang.String java.lang.reflect.InvocationTargetException ERROR in net.logstash.logback.appender.LogstashTcpSocketAppender[STASH] - No destination was configured. Use to add one or more destinations to the appender
本想要实现的目标是在logback中动态引入application中配置logstash指向的host和port,之前的做法是:
application.yml
log:
level: DEBUG
host: 192.168.1.132
port: 4560
logback-spring.xml
<springProperty scope="context" name="LOG_HOST" source="log.host"/>
<springProperty scope="context" name="LOG_PORT" source="log.port"/>
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>${LOG_HOST}:${LOG_PORT}</destination> //logstash ip和暴露的端口,logback就是通过这个地址把日志发送给logstash
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
正确操作通过添加默认值(在xml配置中为空格)解决了此问题,如下所示:
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>${LOG_HOST:- }:${LOG_PORT:- }</destination> //logstash ip和暴露的端口,logback就是通过这个地址把日志发送给logstash
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>