开发中常用日志搜索技巧
在我们的实际开发中,一般应用都部署在Linux上,为了后期方便排查bug或者记录代码执行的流程。对于开发者而言,遇到问题经常需要去看log文件(或者使用Kibana这样的工具),这里介绍几个开发常用而又重要的日志查找技巧。
Linux查看日志的几个常见命令
- grep
- head
- cat
- tail
- less
- ack
- sed
- vi
grep
grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
- 常见使用方法之: grep 2017010500345878 --color info.log
这行命令在info.log中搜索含有"2017010500345878"关键词的段落并且使用其他颜色标记关键词。
优点:根据关键词快速方便定位并且打印出来段落的上下文。
head
head命令是用来查看具体文件的前面几行的内容,该命令默认是前10行内容;
- 常见使用方法之: head -50 info.log
查看info.log文件的前50行。
优点:快速定位到文件的前多少行。
tail
tail命令是用来查看具体文件后面几行的内容,默认情况下,是查看该文件尾10行的内容;还可以使用 tail 来观察日志文件被更新的过程。使用 -f 选项,tail 会自动实时更新文件内容。
- 常见使用方法之: tail -f info.log
cat
cat命令是Linux下的一个文本输出命令,通常是用于观看某个文件的内容的.常用有三大功能:1.一次显示整个文件;2.从键盘创建一个文件。3.将几个文件合并为一个文件。这里我们只举例显示一个文件.
- 常见使用方法之: cat -n info.log
less
less(less) 命令可以对文件或其它输出进行分页显示
- 常见使用方法之: cat -n info.log
ack
ack是一个基于Perl的类似于grep的命令行工具,但是搜索速度更快,能力比grep更强。
- 常见使用方法之: ack -w order
在当前目录递归搜索单词”eat”,不匹配类似于”orderService”或”paymentOrder”的字符串.
- 常见使用方法之: ack -w order
sed
sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
- 常见使用方法之: sed -n '800,900' info.log
查看info.log文件800到900行之间的内容
vi
使用找一个字符串,在vi命令模式下键入“/”,后面跟要查找的字符串,再按回车。vi将光标定位在该串下一次出现的地方上。键入n跳到该串的下一个出现处,键入N跳到该串的上一个出现处。
常见组合使用
使用[grep -n 异常 --color info.log ]查询到异常在文件中发生的行数,然后再看前后几十行日志的内容[sed -n '800,900' info.log].
总结
这些命令的功能都比较丰富,这里只是列出非常简单的一些用法,在一般的开发中都是频繁使用得到.具体的用法需要开自己总结使用自己喜欢使用的命令.(我这里的总结也会持续更新)