使用spring全家桶需要在各种关键位置输出日志,微服务越来越多,日志无法有效收敛和排查问题,因此统一搜索、收集、分析日志就极为重要,本文解决以下问题:

日志统一收集汇总
日志全文搜索、分析

你已经长大了,寄几的日志要寄几处理
该学会自己写代码了

架构图如下

你已经长大了,寄几的日志要寄几处理
自己的日志自己处理

日志可以通过消息队列收集后统一消费,日志的生产者也可以直接对接logstash,最后可以使用kibana对接全文搜索分析,也可以自己写全文搜索逻辑

配置如下

其中最关键的配置是

<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><destination>10.0.0.2:8082</destination><encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/></appender>
<?xml version="1.0" encoding="utf-8" ?>
<!--该日志将日志级别不同的log信息保存到不同的文件中 -->
<configuration><include resource="org/springframework/boot/logging/logback/defaults.xml"/><springProperty scope="context" name="springAppName" source="spring.application.name"/><!-- 日志在工程中的输出位置 --><property name="LOG_FILE" value="${BUILD_FOLDER:-build}/${springAppName}"/><!-- 控制台的日志输出样式 --><property name="CONSOLE_LOG_PATTERN"value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/><!-- 控制台输出 --><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>INFO</level></filter><!-- 日志输出编码 --><encoder><pattern>${CONSOLE_LOG_PATTERN}</pattern><charset>utf8</charset></encoder></appender><!-- 为logstash输出的Appender --><appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><destination>10.0.0.2:8082</destination><encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/></appender><!-- 日志输出级别 --><root level="INFO"><appender-ref ref="console"/><appender-ref ref="logstash"/></root>
</configuration>

当然需要引入关键依赖

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

使用方法

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
@Component
public class RabbitReceiver {Logger logger= LoggerFactory.getLogger(getClass());   public void handleMessage(MyLog mylog) {logger.info(JSON.toJSONString(mylog));    }}

logstash关键配置

主要开启一个收集日志的端口还有需要将日志转化格式后输出到elasticsearch

input {tcp {    mode => "server"host => "10.0.0.2"port => 8082            codec => json_lines       }} output {  elasticsearch {    hosts => ["http://10.0.0.3:9200"]  index => "mylog-%{+YYYY.MM.dd}"manage_template => falsetemplate_overwrite => truetemplate_name => "mylog-%{+YYYY.MM.dd}"template => "/usr/local/data/logstash/config/data.json"}  stdout {                                  codec => json  }}

data.json配置

{"template" : "mylog-%{+YYYY.MM.dd}","settings" : {"index.refresh_interval" : "5s"},  "mappings" : {"_default_" : {"_all" : {"enabled" : true},"dynamic_templates" : [ {"string_fields" : {"match" : "*","match_mapping_type" : "string","mapping" : {"type" : "string", "index" : "analyzed", "omit_norms" : true,"fields" : {"raw" : {"type": "string", "index" : "not_analyzed", "ignore_above" : 256}}           }         }       } ],       "properties" : {"@version": { "type": "string", "index": "not_analyzed" },"geoip"  : {"type" : "object","dynamic": true,"path": "full","properties" : {"location" : { "type" : "geo_point" }}         }       }    }  }}

统一收集后可以使用全文日志搜索

你已经长大了,寄几的日志要寄几处理相关推荐

  1. 萌娃六一对程序员老爸说:再不陪我玩我就长大了

    web前端教程 用大白话,来讲编程 明天就是六一儿童节了,作为程序员,一直是网上较为活跃的一个群体.他们以工作辛苦.赚钱多.老得快出名,网上也有不少黑程序员或者程序员自黑的段子. 不过,身为程序员家庭 ...

  2. linux arduino 字体大小,Arduino Pro IDE,你终于长大了!

    原标题:Arduino Pro IDE,你终于长大了! △向上生长, TO BE TO UP. 10万工程师的成长充电站△ 作者:晓宇,排版:晓宇 微信公众号:芯片之家(ID:chiphome-dy) ...

  3. 爸爸!再不陪我,我就长大了!推荐每个爸爸都看一遍!

    http://mp.weixin.qq.com/s?__biz=MjM5ODQ2MTE2Mw==&mid=200272738&idx=7&sn=d18690ef0f63b16b ...

  4. 终于要长大了吗?是的,你毕业了。

    今天正好是高考考试第一天,想想四年前我也是意气风发,对未来无限向往,那时候也在想这样的问题,我应该算是长大了吧. 还记得当时的这个晚上,回去上晚自习(在高中实验室那边),还在听她们对数学答案,心慌慌! ...

  5. 小别离三个演员都长大了,确定他们这不是成长日常

    胡先煦张子枫太酷了 小别离的三个演员已经长大了,他们现在都长什么样了呢. <小别离>里的三个小演员赵今麦.张子枫.胡先煦现在都长大了,这就是养成系的快乐吧!

  6. Spell 基于最长公共子序列的在线日志解析方法

    文章目录 01 日志模板挖掘 02 基于 LCS 的日志解析流程 2.1 日志键匹配查找 2.2 拆分与合并处理 2.2.1 拆分过程 2.2.2 合并过程 03 匹配查找优化 3.1 前缀树预过滤 ...

  7. 不知道人活着的意义何在、不知觉的就长大了

    时间过的真快,一眨眼一年就过去了,感觉有很多很多的事要写,却是写不出来,去年编程的培训班没有上完,姐姐就帮我介绍了一个他们公司的工作,大学学的网络信息安全,去了应聘了一个网络工程师,简单的去面试一下, ...

  8. 【深度学习】Transformer长大了,它的兄弟姐妹们呢?(含Transformers超细节知识点)...

    最近复旦放出了一篇各种Transformer的变体的综述(重心放在对Transformer结构(模块级别和架构级别)改良模型的介绍),打算在空闲时间把这篇文章梳理一下: 知乎:https://zhua ...

  9. 眼睛里10年的“肉芽”长大了,这究竟是怎么回事?

    奇怪,我眼睛怎么长"翅膀"了? 如果不是眼角的"肉芽"又开始长了,62岁的王大爷可能不会选择上医院就诊!在门诊,希小玛了解到,王大爷10多年前就发现右边白眼仁上 ...

  10. 只有长大了,才认识父亲

    父亲节,翻出2018年的日记,纪念父亲. 在听卢冠廷的<一生所爱>,那沧桑的声音再次打动了我.我对夫人说,我父亲的声音很适合唱这首歌,他们的气质也很像.说完,我突然反应过来,我夫人其实并没 ...

最新文章

  1. 【POCO】POCO学习总结(三)——交叉编译
  2. 计算机网络早期结构图,第21讲 计算机网络应用基础(一).ppt
  3. 【渝粤教育】 国家开放大学2020年春季 1192高层建筑施工 参考试题
  4. C/C++构造及析构顺序及变量的生命周期
  5. SpringCloud 从菜鸟到大牛之一 微服务介绍
  6. 用redis实现分布式锁
  7. JAVA学习-----容器和数据结构
  8. 从零开始写javaweb框架笔记10-搭建轻量级JAVAWEB框架-确定目标
  9. nest 设置密码_如何设置Nest Cam
  10. 选中Excel单元格自动导入多个Excel worksheets
  11. 计算机基础中的word2010,计算机基础word2010上机操作 - 图文
  12. python切片负数_Python切片
  13. system32 下exe文件的作用
  14. 一起写RPC框架(一)RPC之我所见
  15. 这个周末,炸锅了!QQ疑似出现大面积盗号!各种不雅照乱发!网友:被社死!...
  16. vue打开新窗口并且实现传参,有图有真相
  17. 笔记:三维重建大作业1-相机标定
  18. 2022 QS世界大学榜:十年了,世界排名第一还是它...中国大陆大学取得历史最佳...
  19. 使用Google浏览器做真机页面调试
  20. day11-random模块-随机

热门文章

  1. Mybatis面试题总结
  2. srm32定时器的ETR功能
  3. 如何用GIS做城市购房选址分析
  4. JavaScript判断中英文字符
  5. 计算机桌面图标怎么变形了,教您电脑桌面图标变大了怎么办
  6. LNBP10L_LNB电源和控制电压调节器——科时进商城
  7. 《HarmonyOS开发 – OpenHarmony开发笔记(基于小型系统)》第1章 OpenHarmony与Pegasus物联网开发套件简介
  8. 计算机的剪切快捷键是什么意思,word中剪切的快捷键是什么 -电脑资料
  9. android七牛云存储,使用七牛云存储上传android本地视频并播放
  10. LIO-SAM学习与运行测试数据集