当前位置: 技术问答>linux和unix
求一个linux脚本,扫描日志文件里的错误标志
来源: 互联网 发布时间:2017-04-10
本文导语: 现在需要监控一个文本文件的日志,看这个日志会不会出现某一个错误标志,如果出现,返回错误标志出现次数。但是下次再查看这个日志时上次已经扫描到的错误标志就不能再算了。 现在写了一个命令:grep ERROR /...
现在需要监控一个文本文件的日志,看这个日志会不会出现某一个错误标志,如果出现,返回错误标志出现次数。但是下次再查看这个日志时上次已经扫描到的错误标志就不能再算了。
现在写了一个命令:grep ERROR /home/alarm/log/1.log|wc -l,可以查出这个日志文件中所有的错误标志次数,但是不能过滤掉上次查看过的,请高手帮帮忙!
现在写了一个命令:grep ERROR /home/alarm/log/1.log|wc -l,可以查出这个日志文件中所有的错误标志次数,但是不能过滤掉上次查看过的,请高手帮帮忙!
|
最佳做法是让程序自己输出统计项定时dump成日志,这样你就可以取最后一条和上次记录下来的最后一条做差值了。
如果没有,那么可以每次tail -10000行(举例而已,实际需要你保证N行肯定会覆盖到上一次tail时的最后一条日志),然后筛选出命中的存到文件中,与上一次tail存储的文件做diff,取出不同的即可。
如果没有,那么可以每次tail -10000行(举例而已,实际需要你保证N行肯定会覆盖到上一次tail时的最后一条日志),然后筛选出命中的存到文件中,与上一次tail存储的文件做diff,取出不同的即可。
|
我们项目里面的一般是这样解决的:
方案一:对日志文件进行rotate
cp 1.log 1.log.时间戳 && :>1.log
grep ERROR 1.log.时间戳 | wc -l
方案二:根据日志里面每一行的时间进行判断(如果日志内容不包含时间就不能用这个方法了)
crontab设置脚本每个小时运行一次,每次运行只检查一个小时之内的日志内容。
方案一:对日志文件进行rotate
cp 1.log 1.log.时间戳 && :>1.log
grep ERROR 1.log.时间戳 | wc -l
方案二:根据日志里面每一行的时间进行判断(如果日志内容不包含时间就不能用这个方法了)
crontab设置脚本每个小时运行一次,每次运行只检查一个小时之内的日志内容。
|
记录上次扫描到的记录数,用下次的减去上次的 - -!但是这样的话随着日志得增加,扫描的速度会下降