IDE日志分析方法pt。 1个

介绍

我认为大多数软件工程师都了解日志的重要性。 它们已成为软件开发的一部分。 如果无法解决问题,我们尝试在日志中查找原因。 对于一些简单的情况,当错误阻止应用程序打开窗口时,这可能就足够了。 您可以在日志中找到问题,然后在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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/344382.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java运行构建期间出错_构建和运行Java 8支持

java运行构建期间出错尚未提供对Java 8的Eclipse支持。 如果要使用它,则必须构建它。 Eclipsepedia的JDT Core / Java8页面包含有关使用Eclipse Java开发工具 (JDT)中不断发展的Java 8支持源来设置开发环境的说明。 说明中缺少一些内容&#…

从Commons CLI迁移到picocli

最初于2002年发布的Apache Commons CLI可能是使用最广泛的Java命令行解析器,但是它的API显示了它的年龄。 寻找具有最少样板代码的现代方法的应用可能对picocli感兴趣。 为什么要花麻烦的钱进行迁移,以及如何将基于Commons CLI的应用程序迁移到picocli&a…

QuickBooks和Sage数据导出器

许多中小企业都使用QuickBooks作为其会计模块。 同样,许多公司也使用Sage进行会计处理。 他们中的大多数人在需要从这些系统中导出数据时会遇到问题。 在线提供的许多连接器价格昂贵,无法满足确切的要求。 随附的是一些简短的代码段,这些代码…

php内容缓存输出,PHP使用缓存即时输出内容(output buffering)的方法

PHP使用缓存即时输出内容(output buffering)的方法PHP使用缓存即时输出内容(output buffering)的方法。分享给大家供大家参考。具体如下:$buffer ini_get(output_buffering);echo str_repeat( ,$buffer1); //防止浏览器缓存ob_end_flush(); //关闭缓存for( $i1; $i…

继承能够访问父类私有字段_在单元测试中访问私有字段

继承能够访问父类私有字段首先,让我大声说一下,您需要将代码设计为可测试的,以便通过公共方法测试私有字段。 但是,(“ buts”是人们仍在编程而不是计算机本身的原因,所以在这里很高兴)有时您想…

甲骨文函数初探

我非常高兴有机会通过Cloud Native Limited Availability Program来测试Oracle功能。 去年,当我上次尝试在Oracle Groundbreaker APAC巡回赛中在Oracle Cloud中运行无服务器功能时,有两种选择。 您可以在虚拟机中运行我自己的Fn服务器,也可以…

spring roo_使用Spring Roo进行概念验证

spring roo在Keyhole工作期间,我参与了许多项目,其中客户要求我们重写旧系统,同时保留其现有数据库。 有时,它有助于快速演示如何使用当前技术来简化开发,测试和维护其代码。 我发现可以创建一个快速示例(…

oracle虚拟机怎么装系统,Virtualbox怎么安装系统 VirtualBox虚拟机安装Win8系统教程 (3)...

三、对新建的虚拟机做重要的设定:1、在Oracle VM VirtualBox里面点击下刚才建好的虚拟机,然后点下上面的黄色图标“设置”,或者右键菜单里面点击设置也可以(快捷键是CtrlS)Oracle VM VirtualBox虚拟机设置2、在出来的设置页面里面&#xff0c…

oracle xe gentoo,Oracle在gentoo下安装

补充:解决ORACLE10G安装界面中文乱码问题,修改以下变量使安装界面为英文。export LC_CTYPEen_US.UTF-8以下为原文1.OS:Gentoo-linux-2.6.23-rc5Oracle:Oracle Database 10g Release 2 (10.2.0.1.0) for Linux x86下载地址:2.使用管理员账户建立Oracle用户…

JMetro 5.2版发布

再一次问好 JMetro的新更新刚刚发布。 添加了两种新的控件样式:“标题窗格”和“手风琴”。 此外,还对现有样式和错误修复进行了调整。 最终,JMetro现在也可以通过Maven Central获得。 在本文中,我将详细介绍刚刚发布的JMetro 5…

matlab处理svm的数据,SVM-GUI 使用支持向量机(SVM)算法进行处理数据,提取特征参数,并通过MATLAB界面显示相关数 238万源代码下载- www.pudn.com...

文件名称: SVM-GUI下载收藏√ [5 4 3 2 1 ]开发工具: matlab文件大小: 231 KB上传时间: 2014-05-13下载次数: 13提 供 者: 幽灵详细说明:使用支持向量机(SVM)算法进行处理数据,提取特征参数,并通过MATLAB界面显示相关数据-Using Support…

mockito_Eclipse的Mockito模板

mockito有时候,我想念树林里的树木-那是一段令人不安的长时间。 我最近才再次意识到这一点,在无数次中键入了一个更详细的模仿表达式之一。 有问题的语句是一个doAnswer(Answer)构造,使用涉及到的静态导入和泛型代码进行编码总是很麻烦。 尽…

linux系统运行powerbi,使用 Power BI 服务 - Power BI | Microsoft Docs

快速入门 - 使用 Power BI 服Quickstart - Getting around in Power BI service10/12/2020本文内容备注Power BI 正在转换为新外观,文档中的某些图像可能与服务中显示的图像不匹配。Power BI is moving to a new look, and some images in the documentation may no…

JMetro版本4.8已发布

再一次问好! JMetro Java 4.8版JavaFX主题刚刚发布。 我们即将接近下一个主要版本的版本5.0。 这是已经过彻底改造的旧样式: 日期选择器 树视图 以及经过调整或更改了CSS结构的旧版本: 表格检视 列表显示 组合框 评级控制 4.8版详细…

Java 11快多少?

尽管大多数开发人员仍然使用Java 8 ,但Java 11还是在不久前发布的。 让我们看看其中哪个对OptaPlanner更快。 找出答案的最佳方法当然是运行OptaPlanner基准测试。 本文是我们针对Java 8的类似文章的后续文章 。 基准方法 为了运行基准测试,我们使用了&…

linux5.9安装教程,Linux内核5.9的最重要功能及安装方法

原标题:Linux内核5.9的最重要功能及安装方法Linux内核5.9带来了吸引数据中心管理员的诸多性能提升。本文作者着重介绍了改进之处,并介绍了如何安装主线内核。与5.8一样,Linux内核5.9确实没有任何改变游戏规则的功能,至少对普通用户…

Apache Payara:让我们加密

不久前,我写了一个小教程 ,介绍如何生成“让我们加密SSL”证书并将其安装在Glassfish Java EE平台上。 这个技巧对我来说是一个奇迹,但是每三个月必须手动更新和重新安装证书变得很烦人。 我做了一些研究,并且与第一个教程一样&a…

openssh arm linux 编译,openssh编译安装到ARM嵌入式系统中

目录一.SSHD编译(此步骤在虚拟机上执行)1.1 在/root/目录下创建ssh目录1.2 交叉编译zlib1.3交叉编译openssl1.4交叉编译openssh二.移植(此步骤在开发板上执行)2.1 在开发板上建立需要的目录2.2 下面是在开发板上操作2.3修改sshd_config三、加入自启动脚本…

linux gui编程语言,使用 Red 语言编写 GUI 应用程序

一句话概括 — 使用 Red 语言编写原生跨平台桌面 GUI。尝试在 Windows 上使用 PyInstaller 将“可执行”的 ducktape 封装在 Python 脚本之后,我发现应该学习的编程语言类应该具有以下属性:静态二进制编译(产生一个二进制,不是运行时的字节码…

对c语言字符数组描述错误的是,下述对C语言字符数组的描述中错误的是( )。

摘要:条形图用频率值型来表分组分布示数数据,下述没有相邻之间间隔竖条。中国:在中大学列联分析,字符百分表的条件正确关于的是方向说法。条形图用频率值型来表分组分布示数数据,数组述中没有相邻之间间隔竖条。...条形图用频率值…