介绍

我认为大多数软件工程师都了解日志的重要性。 它们已成为软件开发的一部分。 如果无法解决问题,我们尝试在日志中查找原因。 对于一些简单的情况,当错误阻止应用程序打开窗口时,这可能就足够了。 您可以在日志中找到问题,然后在Google上查找并应用解决方案。 但是,如果要修复包含许多组件的大型产品中的错误,则分析日志将成为主要问题。 通常,维护工程师(正在修复不开发新功能的错误)需要处理数百兆字节的日志。 日志通常分为50-100 MB的单独文件并压缩。

有几种方法可以使这项工作更轻松。 我将描述一些现有的解决方案,然后解释解决此问题的理论方法。 这篇博客文章不会讨论任何具体的实现。

现有解决方案

文本编辑器

此解决方案实际上不是解决方案,它是大多数人在需要阅读文本文件时会采取的措施。 一些文本编辑器可能具有有用的功能,例如颜色选择,书签,可以使工作更轻松。 但是,文本编辑器仍然没有一个不错的解决方案。

圆锯

该工具可以使用log4j模式从日志中提取字段。 听起来不错,但这些字段在文字中已经很明显了。 显然,与简单的文本编辑器相比,改进是微不足道的。

LogStash

这个项目看起来还不错。 但是这种方法非常具体。 即使我从描述中从未使用过此工具,但我了解到他们使用ElasticSearch和简单的文本搜索来分析日志。 日志必须上传到某处并建立索引。 之后,该工具可能会显示最常用的单词,用户可以使用文本搜索等。听起来不错,似乎有所改进。 不幸的是没有那么多。 缺点如下:

  • 需要一些时间才能开始使用日志。 一个必须上传它们,将它们编入索引。 工作完成后,必须从系统中删除这些日志。 如果打算对日志进行分析和丢弃,则看起来有些过分。
  • 很多组件涉及很多必需的配置。
  • 全文搜索对日志不是很有用。 通常,工程师正在寻找类似“使用参数678678678创建的连接2345”之类的东西。 查找“使用参数创建”将返回所有连接。 查找“连接2345”将返回所有此类语句,但是通常只有一个-创建此连接时。

其他基于云的解决方案

有很多基于云的解决方案可用。 他们大多数有商业计划,有些有免费计划。 它们提供通知,可视化和其他功能,但主要原理与LogStash相同。

日志分析说明

要了解为什么这些解决方案在分析复杂问题时效果不佳,我们需要尝试了解工作流程。 这是文本编辑器的示例工作流程:

  1. 工程师收到了1 GB的日志,其中包含该bug发生在23:00的信息,请求ID为12345。
  2. 首先,他或她会尝试在这段时间内发现任何错误或异常。
  3. 如果失败,则工程师必须为该请求重建事件流。 他或她开始寻找诸如“已创建连接”,“已删除连接”,“请求移至此阶段”之类的语句,以试图缩小问题的时间范围。
  4. 这通常是成功的(即使可能要花费很多时间),现在很明显,问题是在将连接111移到状态Q之后发生的。
  5. 经过多一点的挖掘之后,工程师发现这与连接222进入状态W一致。
  6. 最终,工程师高兴地看到,将连接222移动到新状态的线程还修改了另一个影响连接111的变量。最后是根本原因。

在此工作流程中,我们看到工程师大部分时间都在寻找带有某些参数的标准字符串。 如果可以简化的话……

IDE方法

IDE方法包括几个部分。

  1. 正则表达式 。 使用正则表达式,可以指定模板并在日志中搜索它。 使用正则表达式查找标准字符串要简单得多。
  2. 正则表达式配置 。 这里的想法是标准字符串如“创建的连接\ d {5} \ w {2}”,“连接\ d {5} \ w {2}移到阶段\ w {7}”,“连接\ d { 5} \ w {2}已删除”不会经常更改。 编写正则表达式每次都很难找到它,因为这样的正则表达式可能真的很长很复杂。 如果可以通过单击按钮来配置和使用它们,则会更加容易。
  3. IDE 。 我们需要某种IDE来将其结合在一起。 要读取配置,请显示日志文件和存储的正则表达式,并显示文本和搜索结果。 最好像这样:
  4. 颜色特征 。 从经验中我知道,当您可以用颜色标记一些字符串以在日志中轻松查看日志时,日志分析要容易得多。 大多数商业日志分析器工具都使用颜色选择。 IDE应该对此提供帮助。

利弊

IDE方法的优点:

  1. 无需云服务。 没有在某处加载千兆字节的日志,没有云配置。 只需打开IDE记录日志,打开日志文件夹并开始分析。
  2. 如果IDE是免费的,则整个过程是完全免费的。 无论如何应该比日志服务便宜。

IDE方法的缺点:

  1. 大多数云服务“实时”提供实时通知和日志分析。 这意味着一旦指定的异常发生,就会通知用户。 IDE方法无法做到这一点。
  2. 由于在Java中使用大字符串会消耗大量内存,因此对用户PC的要求会更高。 根据我的经验,最低要求为8 GB。

最重要的是,IDE方法适合分析日志中的复杂问题。 它不能提供云服务的实时功能,但是对于分析和修复错误应该便宜得多,并且更容易。

最后的想法

如果有人可以实施这种出色的方法,那就太好了! 我的意思是创建具有所有这些功能的IDE,并使每个人的日志分析更加轻松! 我从经验中知道,这可能是一件乏味的工作,比实际要难。 在下一篇文章(第2部分)中,我将解释这种方法的困难/挑战,并提供基于Eclipse框架的可行实现。

翻译自: https://www.javacodegeeks.com/2018/11/ide-approach-log-analysis-pt.html

IDE日志分析方法pt。 1个相关推荐

  1. IDE日志分析方法pt。 2

    介绍 在第一部分中,我解释了日志分析的理论方法,我认为这对维持工程师是最合适的. 这位工程师不需要在日志出现时立即对其进行分析,而是专注于对复杂问题的深入分析. 在第二部分中,我将展示一个复杂的模板可 ...

  2. ide 日志 乱码_IDE日志分析方法pt。 1个

    ide 日志 乱码 介绍 我认为大多数软件工程师都了解日志的重要性. 它们已成为软件开发的一部分. 如果无法解决问题,我们尝试在日志中查找原因. 对于一些简单的情况,当错误阻止应用程序打开窗口时,这可 ...

  3. ide 日志 乱码_IDE日志分析方法pt。 2

    ide 日志 乱码 介绍 在第一部分中,我解释了测井分析的理论方法,我认为这对维持工程师是最好的. 该工程师不需要在日志出现时立即对其进行分析,而是专注于对复杂问题的深入分析. 在第二部分中,我将展示 ...

  4. linux日志.pdf,一种用于LINUX的AUDIT日志分析方法.pdf

    一种用于Linux的audit日志分析方法 技术领域 本发明涉及服务器技术领域,具体的说是一种用于Linux的audit日志分析方法. 背景技术 Linux内核有用日志记录事件的能力,比如记录系统调用 ...

  5. IIS日志分析方法及工具

    出处: http://xugang.cnblogs.com 日志的重要性已经越来越受到程序员的重视,IIS的日志更是不言而喻. IIS日志建议使用W3C扩充日志文件格式,这也是IIS 5.0已上默认的 ...

  6. 关于fi dd ler 手机抓包 网卡地址地址_终端抓包与日志分析方法

    作为工程师,检测应用是否有收发包常见的方法就是抓包.linux平台下可以通过tcpdump命令进行抓包,windows 和Mac 平台也有Wireshark工具,对于终端如何进行抓包与日志分析. 终端 ...

  7. auditd日志分析方法

    auditd是监听目录下的文件操作 你可以通过auditd配置你要监听的目录,之后对这个目录下的操作会记录到autitd的日志中 这里先不讲如何去配置auditd,这里讲如何去分析auditd日志 a ...

  8. 服务器缺少storportSYS文件,Windows操作系统蓝屏日志分析方法

    或许你可以先检测下机器硬件健康状况,详情点击查看检测教程 工具:X64 Debuggers And Tools-x64_en-us 下载地址:链接:http://pan.baidu.com/s/1cA ...

  9. 虚拟服务器的安全日志,虚拟主机日志分析方法

    1.登录主机管理控制台,选择目标主机,下载日志 2.将下载到本地的所有日志合并成一个.log文件. 3.下载并安装WebLog Expert Lite工具. 4.开始分析日志,新建分析:运行WebLo ...

最新文章

  1. jQuery案例(底部导航图片切换)
  2. Eclipse导入Maven项目解决Build Path不能配置问题
  3. oracle存储过程的基本语法
  4. android json mysql_Android通过json向MySQL中读写数据的方法详解【写入篇】
  5. c++stl应用入门
  6. 《51单片机应用开发范例大全(第3版)》——第1章 单片机C语言开发基础
  7. Android之如果解决Android studio项目里面的类名不能重命名
  8. google earth pro 64位_七彩虹秀精准刀工!iGame RTX 3060 Ti Advanced OC评测:烤机3小时64度...
  9. android 捕获Home键和ACTION_TIME_TICK广播
  10. 数据可视化美学形式与功能需要齐头并进
  11. 4.7 什么是深度卷积网络?
  12. c/c++教程 - 2.4.3 this指针作用,链式编程思想,空指针访问成员函数,const修饰成员函数,常函数,常对象
  13. Atitit vue绑定json列表数据到表格最小简化培训版本 目录 1.1. 引入类库jq与vue 1 1.2. 获取ajax数据并推送到vue的内部自定义变量 1 1.3. 建立表格与vue变量
  14. 数据结构与算法实验4——字符串和数组 7-5 病毒变种
  15. MIGO/CO11N 批次创建增强 自定义批次号创建规则
  16. uview + uni-app 开发app,密码显示隐藏功能不生效
  17. GALIL运动控制卡维修控制器维修DMC-1840
  18. NSSCTF ez_unserialize
  19. 最新ThinkPHP微信独立精彩互换抢红包系统源码开源版
  20. Aurora---前后端分离博客

热门文章

  1. 【图论】【最短路】【SPFA】【USACO题库】2.4.4 Bessie Come Home回家(jzoj 1274)
  2. Wannafly挑战赛18
  3. Javafx的WebEgine执行window对象设置属性后为undefined
  4. 从NIO到Netty开发
  5. 达到年薪 40W 必需掌握的技术。
  6. composer配置阿里云镜像
  7. ssm(Spring+Spring mvc+mybatis)Dao层配置sql的文件——DeptDaoMapper.xml
  8. 银行营业网点管理系统——dao包(BaseDao)
  9. git删除本地分支、删除远程分支 复制分支
  10. python创建文件对象_python基础教程:文件读写