美文网首页Java漫谈java 设计
Springboot 配置logback 到logstash E

Springboot 配置logback 到logstash E

作者: 聊聊其他 | 来源:发表于2019-10-08 13:37 被阅读0次

    日志的管理,可以很简单,也可以很烦人。简单的可以使用tail , cat 等工具来完成基本的需求。

    但是随着业务的发展,各种应用的日志多起来之后,如果还是使用之前的小工具处理起来就费劲了,可能要同时开着几个甚至十几个的远程来查看日志来定位问题。

    那有没有什么好的解决方案呢?

    ELK 日志统一管理

    如果之前没听过ELK的话,我相信Elasticsearch 还是起码听过的。具体我就不介绍了。想要详细了解,可以自定Google或者百度。

    今天首先给大家介绍第一部分,如何将我们的应用日志输入到ELK中,统一管理。

    logstash 的安装和启动

    logstash 不用安装,直接到官网上下载就能直接使用。下载下来的之后,在bin目录下就可以直接启动。解压出来的路径下有conif 的目录,里面包含的是配置文件。

    我们这里使用的是跟ES 集成,要用到Elasitcsearch 的插件。

    下面是logstash 的配置样例:

    input {
        file {
            path => "path-to-log/app.log"#日志文件的路径
            
            
        }
        
        
    }
    
    
    
     
    output {
    
             elasticsearch { #es 插件
                 hosts => [ "elasticsearch:9200" ]
                 index => "app-%{+YYYY.MM.dd}"
                 
                 manage_template => false
                 
                 
            }
        
    }
    

    笔者这里直接使用的是docker 镜像来启动,你们可以根据自己的喜欢来选择不同的方式安装启动。

    logback 配置

    上面配置完logstash 之后,我们还需要把spring的应用配置好logback

    <appender name="STASH" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>path-to-log/app.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logback/redditApp.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>7</maxHistory>
        </rollingPolicy>  
        <encoder class="net.logstash.logback.encoder.LogstashEncoder"/>
    </appender>
    <root level="DEBUG">
        <appender-ref ref="STASH" />        
    </root>
    

    这里需要注意,<file> tag 里面的日志文件,必须要跟logstash 上面的路径一直

    因为使用到Logstash 的appender , 所以还需要再maven上面添加依赖

    <dependency> 
        <groupId>net.logstash.logback</groupId> 
        <artifactId>logstash-logback-encoder</artifactId> 
        <version>4.11</version> 
    </dependency>
    

    接下来就可以启动服务生成日志了。

    启动命令

    docker
    docker network create elk #创建network
    
    docker run --name logstash --net elk  -p 5044:5044 -p 9600:9600 logstash:7.3.2  -f config-sample.yml
    
    bin
    install-path/bin/logstash -f config-sample.yml
    

    这里的config-sample.yml 制定的是上面的配置文件,读者可以根据需求修改。
    注意:修改之后的配置,需要重启logstash 才能生效

    启动之后,这里logstash 应该会报错,说无法连接到elasticsearch。这时候我们要启动ES 应用。

    启动ES

    docker run --name elasticsearch --network elk  -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.3.2
    

    等ES 起来之后,就可以正常输出日志到ES 了。

    最后,我们还要到kibana 上查看我们的日志文件。这个留到下一讲之后,我们再去详细了解。

    今天就到这里了。谢谢大家。

    相关文章

      网友评论

        本文标题:Springboot 配置logback 到logstash E

        本文链接:https://www.haomeiwen.com/subject/durvpctx.html