java开发工具(10)查日志,你还在用vim,grep,sed么?告诉你真正好用的less命令


我想现在许多人查日志,刚开始的时候,都是直接使用 grep命令,后面又接触了 vim,sed等命令,这些命令都是查看日志的利器,但是其中也有部分缺陷,怎么样用正确的姿势去 又快又好地查看问题,这里我将为你介绍less命令,希望藉此, 让你查看问题的时间缩短,查看问题的效率升高

一、grep命令查看日志有什么不便?

我相信许多人,包括我自己在内,刚开始的时候,查看日志,直接一个

grep '错误' 日志.log

如果需要根据多个关键字查询的话,再拼接grep命令,如果需要显示上下行,再加上-A,-B或者-C参数。就会出现下上下关联的日志:
grep日志
用grep日志,你会发现这并不符合人类的阅读习惯,上下5行你没有看到具体问题,再上下100行,上下1000行,你自己最后都看晕了,甚至还看不出来问题点在哪里。
试想,如果能像人类的阅读文章一样,可以自己翻页阅读,搜索查询,这样是不是体验更好?也更容易定位到问题?

这个时候可能有人更换到vim了,觉得vim才是王道,看日志各种翻页,各种方便。

二、vim很好用,但也有缺陷

vim的优点

vim确实是神器,楼主也用了一段时间,vim有如下功能

  • 通过"/"直接搜索关键字,还能支持正则表达式匹配
  • 通过“n”查找下一个,通过shift+n查找上一个匹配项
  • 通过“f”向下翻页,通过“b”向上翻页
  • 搜索的内容可以高亮显示出来,一目了然
    展示一下,使用场景:
    vim搜索

楼主好几年前,初识vim的时候,认定,就是它了,查日志的利器,极大提升效率,果断放弃grep命令。

vim的缺点

后来在使用过程中,楼主发现vim有一些缺点,这些缺点让公司禁用了vim,命令,而楼主也感谢幸亏公司禁用了此命令,否则楼主还会一直用下去此命令,产生问题而不得知。
vim的主要缺点就是两个:

  1. vim可以修改日志文件内容,线上的日志文件其实是不能随便修改的,这个缺点和sed命令一致。
  2. vim会把日志文件全部加载到内存中,如果日志文件几十兆还好,如果一个日志文件好几百兆甚至上G,一下就把内存占满了,甚至有导致服务宕机的危险

此时,vim和grep就都不能推荐使用了,有没有什么命令像“grep”命令一个没有危险,又像vim一样可以符合人类的阅读习惯呢?
此时就轮到我们要说的less命令登场了

三、less命令

用法

less命令,可以直接通过less+日志文件使用

less 日志.log

这个时候你就可以进入到日志文件中了
less进入日志

进入后的使用

进入文件中,默认是进入第一页,使用“shift+g”到最后一页,使用“g”到第一页。

关于搜索关键字,上下翻页等功能都与vim一致,可以直接参考vim的使用。
此时,你查看日志不仅效率很高,而且没有任何风险。可以说是看日志最佳命令也不为过

四、总结

我们本篇博文介绍了grep,sed,vim等命令的缺点,然后结合各个命令的优点,查日志我们推荐了less命令,现在总结一个各个命令的优缺点:

  • grep:没有内存飙升风险,但是查看日志的方式,不符合人类的阅读习惯
  • vim:符合人类的阅读习惯,查日志也很方便,但是可以修改日志文件,也有内存飙升导致服务器宕机的风险
  • less:没有内存飙升风险,查日志也符合人类习惯。

其实我们的生产环境,一个服务会部署多台服务器,比如一个商品中心服务,可能会部署3台,这个时候,一台台去查看日志还是没有特别方便,还是结合一个日志收集工具,通过页面去查询最为方便快捷,但是非生产环境,用好了查日志命令就可以快速定位问题,解决问题。

发布了188 篇原创文章 · 获赞 117 · 访问量 38万+

猜你喜欢

转载自blog.csdn.net/lz710117239/article/details/105453640