从 0 到 1,看我玩弄千万日志于股掌

本文讲述了程序员鱼皮在处理日志的过程中,从无日志到通过ELK(Elasticsearch、Logstash、Kibana)实现分布式日志收集系统的过程。他分享了如何逐步解决日志过多带来的困扰,包括日志分级、按类隔离、日志上报和集中式管理,最后完善日志架构,利用Kafka进行缓冲,打造了一个能处理千万级日志的系统。
摘要由CSDN通过智能技术生成

程序员的工作离不开日志。

日志就像一个笔记本,可以记录程序运行时的一些信息。

从 0 到 1,看我玩弄千万日志于股掌

日志文件

通过日志,我们可以做很多事情。

日志的作用

1. 记录系统和接口的使用情况,比如请求日志

2. 记录和分析用户的行为,比如网站访问日志

3. 调试程序,和控制台的作用类似,但是控制台中的内容并不会保存到文件中,而日志可以长期保存。

4. 帮助我们排查和定位错误。比如在系统抛出异常时,将异常信息记录到日志,可以事后复盘。

5. 通过分析日志还能够优化代码逻辑、提升系统性能、稳定性等。

从 0 到 1,看我玩弄千万日志于股掌

 

日志虽然有那么多的作用,但如果数量过多,也会让开发人员感到头疼。对于大型的系统,程序员们经常要看几千、几万行日志,常常看日志看到头晕眼花。

从 0 到 1,看我玩弄千万日志于股掌

 

但是,其实处理日志是有很多技巧的,下面鱼皮分享自己和日志的故事。

故事分为 7 个阶段,从看日志看到怀疑人生,再到玩弄千万日志于股掌,鱼皮都做了哪些事情?

鱼皮和日志的爱恨情仇

第一阶段 无日志

刚开始搭建新的系统时,为了图个方便,鱼皮没有给系统接入任何的日志框架,也没有记录任何日志,整个项目非常的干净丝滑。需要调试时就直接用输出函数将信息打印在控制台,出 了异常就直接打印堆栈。

从 0 到 1,看我玩弄千万日志于股掌

 

真是无事一身轻,爽 的不得了!

可惜,好景不长。在项目上线之后,突然有一天,系统出问题了,数据查不出来了,同事找上门来了。

鱼皮笑着说:“问题不大!”

从 0 到 1,看我玩弄千万日志于股掌

 

然后登录服务器,进入项目目录,瞬间傻眼。

项目目录依旧干净丝滑,原来我特么根本没记日志啊!

这下好了,什么问题都查不出来。乖乖地去给项目加上日志功能吧。

第二阶段 引入日志类库

Java 语言有很多优秀的日志类库,比如 Logback、Log4j2 等,提供了很多记录和打印日志的方法,非常方便。可以直接使用其中一个类库,而无需自己实现。此处因为鱼皮的项目使用 Spring Boot 框架进行开发,直接使用其默认日志库 Logback 即可。

使用方式很简单,先添加 logback.xml 配置文件,主要配置了日志文件的存储路径和格式。Logback 框架还会自动将日志按天进行压缩,并且在一定天数后进行删除,以节约磁盘空间。最大存储天数也可以在配置文件中指定。

配置文件大概长这样:

从 0 到 1,看我玩弄千万日志于股掌

 

在要打印日志的类上创建一个日志对象:

Logger logger = LoggerFactory.getLogger(MyApp.class);

然后就可以使用该对象去记录日志啦:

catch(Exception e) { logger.error("app error", e);}

加上配置文件后,启动项目,就可以看见生成的日志文件了。欧耶,下次系统再出问题,就不怕缺乏信息来排错啦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值