Chinaunix首页 | 论坛 | 博客
  • 博客访问: 532875
  • 博文数量: 39
  • 博客积分: 1046
  • 博客等级: 准尉
  • 技术积分: 895
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-10 16:50
文章分类

全部博文(39)

文章存档

2013年(8)

2012年(31)

分类: LINUX

2012-08-07 13:11:23

准备步骤:
1.事件日志导出为txt (默认的evt格式不便处理),压缩
2.通过各种途径,获取到本地linux系统
3.执行format_app_log.sh

点击(此处)折叠或打开

  1. #!/bin/bash
  2. #Author:personball
  3. #Date:2012-8-6
  4. if [ $# -ne 2 ]
  5. then
  6. echo "Usage:$0 FILENAME NEWNAME"
  7. exit 1
  8. fi
  9. file=$1 #待处理文件,来自win2003事件查看器导出为txt形式的事件日志记录
  10. newfile=$2 #处理后的新文件名
  11. iconv -f gbk -t utf8 $file >/tmp/app_tmp.$$ #编码处理gbk转为utf8
  12. cat /tmp/app_tmp.$$|tr '^M' '\n' >$newfile #处理win系统的回车换行(^M=ctrl+v+Enter)
  13. sed -i '/^2012/ s/"/\n/' $newfile #处理掉首个双引号
  14. cat $newfile|tr '\n"' '\t\n'|tr '\t' ' '|tr -s ' ' >/tmp/app_tmp2.$$ #多行处理为
  15. 单行,利用后一个双引号分隔记录
  16. sed 's/\t*//' /tmp/app_tmp2.$$ >$newfile #处理行首制表符
  17. exit 0
4.执行app_event_deal.sh

点击(此处)折叠或打开

  1. #!/bin/bash
  2. #Author:personball
  3. #Date:2012-8-6
  4. if [ $# -ne 2 ]
  5. then
  6. echo "Usage:$0 FileName yyyy-MM-dd"
  7. exit 1
  8. fi
  9. file=$1 #文件需经过预处理
  10. _date=$2 #yyyy-MM-dd 日期如 2012-8-6
  11. #提取记录
  12. awk '$1~/^'$_date'/{print}' $file >app_log.$_date
  13. #制作报表
  14. total=`cat app_log.$_date|wc -l`
  15. totalEx=`grep "异常类型" -c app_log.$_date`
  16. grep -v "异常类型" app_log.$_date >app_log.$_date.NotEx
  17. grep -oP "异常类型: [^ ]*" app_log.$_date|awk -F: '{a[$2]++} END{for(i in a)print i" "a[i]}' > app_log.$_date.Ex
  18. while read a b
  19. do
  20. grep "$a" app_log.$_date >app_log.$_date.Ex_${a}_${b} #导出各类异常日志内容
  21. done
  22. echo "异常类型事件总计:$totalEx/$total" >> app_log.$_date.Ex
  23. mkdir $_date
  24. mv app_log.$_date* ./$_date
  25. exit 0

用途: =  =其实是为了有点马后炮式的bug修补(前期测试不健壮。。),聊胜于无。。

最后附一些日志内容的样本吧,当然公家的某些信息要先处理下。。。

原始日志内容:

点击(此处)折叠或打开

  1. 2012-8-7 8:52:33 ASP.NET 2.0.50727.0 ???? Web ??? 1309 N/    ???? URL:    ???????:    ?? 
  2.    ?? xxx.Page_Load(Object sender, EventArgs e)
  3.    ?? System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
  4.    ?? System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
  5.    ?? System.Web.UI.Control.OnLoad(EventArgs e)
  6.    ?? System.Web.UI.Control.LoadRecursive()
  7.    ?? System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
经脚本format_app_log.sh格式化后:

点击(此处)折叠或打开

  1. 2012-8-7 8:52:33 ASP.NET 2.0.50727.0 警告 Web 事件 1309 N/A xxxxx 事件代码: 3005 事件消息: 发生了未处理的异常。 事件时间: 2012-8-7 8:52:33 事件时间(UTC): 2012-8-7 0:52:33 事件 ID: 9dfe91df97984d508bf805e03d9d1f3e 事件序列: 61534 事件匹配项: 24 事件详细信息代码: 0 应用程序信息: 应用程序域: /xxxxx 信任级别: Full 应用程序虚拟路径: / 应用程序路径: xxxxxxxx 计算机名:xxxxx 进程信息: 进程 ID: 2648 进程名: w3wp.exe 帐户名: xxxx异常信息: 异常类型: Exception 异常消息: 超时时间已到。在操作完成之前超时时间已过或服务器未响应。 请求信息: 请求 URL: /xxxxxx 请求路径: /xxxxxx.aspx 用户主机地址:x.x.x.x 用户: 是否已经过身份验证: False 身份验证类型: 线程帐户名: xxxxxxx 线程信息: 线程 ID: 7 线程帐户名: xxxxxxx 是否正在模拟: False 堆栈跟踪: 在 xxxxxx.xxxx(String xxxxx, xxxxxx) 在 xxxxxx.Page_Load(Object sender, EventArgs e) 在 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) 在 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) 在 System.Web.UI.Control.OnLoad(EventArgs e) 在 System.Web.UI.Control.LoadRecursive() 在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 自定义事件详细信息:
统计结果以及提取的各文件:
数数结果

点击(此处)折叠或打开

  1. personball@vostro:2012-8-6$cat app_log.2012-8-6.Ex
  2. ArgumentOutOfRangeException 2
  3. NullReferenceException 18
  4. Exception 78
  5. IndexOutOfRangeException 8
  6. ThreadAbortException 2
  7. InvalidOperationException 135
  8. HttpException 71
  9. SqlException 102
  10. ApplicationException 15
  11. FormatException 10
  12. IOException 88
  13. ArgumentException 35
  14. SmtpException 1
  15. 异常类型事件总计:565/570
其他文件,文件内容,基本就是同一异常的日志汇总到一个文件中:

点击(此处)折叠或打开

  1. personball@vostro:2012-8-6$ls
  2. app_log.2012-8-6
  3. app_log.2012-8-6.Ex
  4. app_log.2012-8-6.Ex_ApplicationException_15
  5. app_log.2012-8-6.Ex_ArgumentException_35
  6. app_log.2012-8-6.Ex_ArgumentOutOfRangeException_2
  7. app_log.2012-8-6.Ex_Exception_78
  8. app_log.2012-8-6.Ex_FormatException_10
  9. app_log.2012-8-6.Ex_HttpException_71
  10. app_log.2012-8-6.Ex_IndexOutOfRangeException_8
  11. app_log.2012-8-6.Ex_InvalidOperationException_135
  12. app_log.2012-8-6.Ex_IOException_88
  13. app_log.2012-8-6.Ex_NullReferenceException_18
  14. app_log.2012-8-6.Ex_SmtpException_1
  15. app_log.2012-8-6.Ex_SqlException_102
  16. app_log.2012-8-6.Ex_ThreadAbortException_2
  17. app_log.2012-8-6.NotEx







阅读(4039) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~