Logback通过Logstash将日志存储到Elasticsearch

logback通过logstash将日志存储到Elasticsearch

需求

将项目的日志存储到Elasticsearch

前提

该项目基于ruoyi-vue开发,日志部分使用logback

POM文件改动

pom中添加如下依赖

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

logback.xml改动

  1. 新增如下代码
<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
  	<!-- 配置logstash地址 -->
    <destination>127.0.0.1:10515</destination>
    <!-- <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" /> -->
    <!-- 日志输出编码 -->
    <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
        <providers>
            <timestamp>
                <!-- 时区设置,此处根据实际情况进行设置,注意UTC(世界统一时间,比北京早8小时) -->
                <timeZone>Asia/Shanghai</timeZone>
            </timestamp>
            <pattern>
                <pattern>
                    {
                    "severity": "%level",
                    "service": "${springAppName:-}",
                    "trace": "%X{X-B3-TraceId:-}",
                    "span": "%X{X-B3-SpanId:-}",
                    "exportable": "%X{X-Span-Export:-}",
                    "pid": "${PID:-}",
                    "thread": "%thread",
                    "class": "%logger{40}",
                    "msg": "%message"
                    }
                </pattern>
            </pattern>
        </providers>
    </encoder>
</appender>
  1. 将新增加的appender添加到输出
    以ruoyi-vue作为示例:
<root level="info">
    <appender-ref ref="console" />
    <appender-ref ref="logstash" />
</root>

<!--系统操作日志-->
<root level="info">
    <appender-ref ref="file_info" />
    <appender-ref ref="file_error" />
    <appender-ref ref="logstash" />
</root>

<!--系统用户操作日志-->
<logger name="sys-user" level="info">
    <appender-ref ref="sys-user"/>
    <appender-ref ref="logstash"/>
</logger>

logstash改动

在…/logstash/config目录下新建一个xlzbd.conf文件(文件名根据项目自行定义),conf内容如下:

input {
  tcp {
    # 内容描述
    type => "xlzbd-syslog"
    # 监听端口
    port => 10515    	
  }	
}

output {
  elasticsearch {
    # 目标es地址
    hosts => ["http://localhost:19200"]
    # 索引命名
    index => "xlzbd-syslog-%{+YYYY.MM.dd}"
    # es用户名称(未开启无需填写)
    user => "elastic"
    # es用户密码(未开启无需填写)
    password => ""
  }
}

配置结束

启动项目启动logstash,项目日志即被写入到es

参考文章

  1. 最实用的logback讲解(2)—appender
  2. serverTimezone=UTC的那些坑
  3. logstash-logback-encoder
  4. logback整合Logstash
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值