spring - 使用 Spring-boot 配置的 Logstash/Logback 设置

标签 spring logging spring-boot logstash logback

我正在尝试在我的 Spring Boot 项目中以编程方式使用 logback 设置 logstash,以便使用环境进行设置。

为此,我使用了一个简单的@Configuration bean(简化代码,然后我将使用环境设置主机/端口):

@Component
@Slf4j
public class LogstashConfiguration {

    private LogstashTcpSocketAppender logstashTcpSocketAppender;

    @PostConstruct
    public void init() {
        Logger rootLogger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
        LoggerContext loggerContext = rootLogger.getLoggerContext();
        //loggerContext.reset(); // shouldn't need to use that

        logstashTcpSocketAppender = new LogstashTcpSocketAppender();
        logstashTcpSocketAppender.setName("logstash");
        logstashTcpSocketAppender.setContext(loggerContext);
        logstashTcpSocketAppender.setRemoteHost("localhost");
        logstashTcpSocketAppender.setPort(4560);

        PatternLayoutEncoder encoder = new PatternLayoutEncoder();
        encoder.setContext(loggerContext);
        encoder.start();

        logstashTcpSocketAppender.setEncoder(encoder);
        logstashTcpSocketAppender.start();

        rootLogger.addAppender(logstashTcpSocketAppender);
        rootLogger.setLevel(Level.ALL);
        rootLogger.warn("TEST");

}

我可以看到 TcpSocketAppender 正在登录我的 logstash 服务器,但是我从未收到 TEST 日志。但我可以在控制台中看到“TEST”。

此外,如果设置 https://github.com/logstash/logstash-logback-encoder#tcp 中提到的记录器,它也可以工作。

你有什么建议可以让它发挥作用吗?

谢谢,

法布里斯

最佳答案

实际上,appender 已正确绑定(bind)到记录器,但与 logstash 的连接失败并出现 SocketException(损坏的管道)。

为了解决这个问题,我只需要使用 LogstashEncoder 而不是 PatternLayoutEncoder。

关于spring - 使用 Spring-boot 配置的 Logstash/Logback 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31143527/

相关文章:

spring-boot - 错误请求 - 主机和端口的这种组合需要 TLS。使用 Spring Boot

java - 尽管调用了该方法,为什么 AbstractMvcEndpoint 的子类仍返回 404?

java - Spring Boot Maven webapp 文件夹和 ResourceHandler

java - 在 Spring Batch 步骤中引用命令行参数

java - JBoss AS 7 : Logging to remote host (logstash)

使用 dictConfig 进行 Python 日志记录 - "No handlers could be found"

Java Spring Boot - 使用有效载荷记录响应

java.lang.ClassCastException : com. tibco.tibjms.TibjmsxSessionImp 无法转换为 javax.jms.QueueSession

java - spring-data-rest,你能提供实体的完整细节而不是(或与)链接吗

unit-testing - 在不运行 @SpringBootApplication 的情况下测试 Spring Boot 服务