shell统计日志信息

一般应用中都会使用log4j记录日志信息,并每天生成一个日志文件,每个文件以当天的日期结尾。

如何统计并分析这些日志信息?

最简单的,使用shell脚本进行统计分析:

下面的脚本就将最近一周的日志文件的行数进行了统计并罗列出来,还和上周的进行了比较。

可以将分析出来的信息输出到一个特定文件中,将该文件发送邮件或给web服务进行显示。

date
echo "========================================================"
echo "========日期========本周量========上周量=====本周-上周=="
for i in {1..7}
do
  ddate=$(date +%Y-%m-%d-%w --date="-$i day")
  xdate=$(date +%Y-%m-%d --date="-$i day")
  ydate=$(date +%Y-%m-%d --date="-$[i+7] day")
  x=$(cat "receive-sms.log.$xdate" | wc -l)
  y=$(cat "receive-sms.log.$ydate" | wc -l)
  echo "  $ddate   |   $x   |   $y   |   $[x-y]"
  xtotal=$[xtotal+x]
  ytotal=$[ytotal+y]
  echo "  -----------------------------------------------------"
done
echo "  total value    |  $xtotal   |  $ytotal  |  $[total-ytotal]"
echo "  -----------------------------------------------------"
echo "  average value  |  $[xtotal/7]    |  $[ytotal/7]    |  $[xtotal/7-ytotal/7]"
echo "========================================================="

输出结果:

2015年 11月 18日 星期三 17:27:00 CST
=======================================================
======日期========本周量========上周量=====本周-上周===
2015-11-17-2   |   19597   |   16325   |   3272
-------------------------------------------------------
2015-11-16-1   |   18615   |   15851   |   2764
-------------------------------------------------------
2015-11-15-0   |   10623   |   9058   |   1565
-------------------------------------------------------
2015-11-14-6   |   12215   |   10985   |   1230
-------------------------------------------------------
2015-11-13-5   |   16268   |   16331   |   -63
-------------------------------------------------------
2015-11-12-4   |   16864   |   37047   |   -20183
-------------------------------------------------------
2015-11-11-3   |   15066   |   40440   |   -25374
-------------------------------------------------------
total value    |  109248   |  146037  |  -146037
-------------------------------------------------------
average value  |  15606    |  20862    |  -5256
=======================================================