IDE日志分析方法pt。 2

介绍

在第一部分中,我解释了日志分析的理论方法,我认为这对维持工程师是最合适的。 这位工程师不需要在日志出现时立即对其进行分析,而是专注于对复杂问题的深入分析。 在第二部分中,我将展示一个复杂的模板可以涵盖许多搜索场景,并展示一个可行的原型。

搜索对象模板

搜索模板的主要要求是它必须是复杂的,在最佳情况下必须非常复杂。 手动搜索越少越好。 复杂的模板应完成大部分工作并快速完成。 由于我们这里没有任何服务器,因此仅预期可处理2-3 GB日志速度的开发人员PC也很重要。

主要正则表达式

模板应声明一些正则表达式,这些正则表达式将在日志中搜索(使用Matcher.find)。 如果首先声明多个,则收集第一个的结果,然后收集第二个的结果,等等。从最一般的意义上讲,搜索结果是String数组– List <String>。

验收标准

并非所有结果都被搜索过程接受。 例如,工程师可以搜索除“ X”以外的所有连接类型。 然后,他或她可以创建一个接受标准并过滤掉它们。 通过指定正则表达式“除X外的任何类型”。 另一种可能性是在时间间隔内搜索。 工程师可以搜索10到12个小时之间的任何日志记录(他或她必须输入完整的日期)。

寻找不同的表达也是可能的。 在这种情况下,工程师会指定一个以上的正则表达式(一般情况下会指定多个)。 一个例子将更好地解释这个概念。

不同的正则表达式:

connection type (q|w) 

主正则表达式找到的日志记录:

connection type w found
connection type q created
connection type s destroyed
connection type q found

独特搜索的结果:

connection type w found
connection type q created

参量

正则表达式的问题之一是,真正有用的正则表达式非常长且笨拙。 以下是日志中的样本日期:

2018-08-06 10:32:12.234

这是它的正则表达式:

\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d.\d\d\d

解决方案非常简单–使用替代。 我称它们为正则表达式的参数。 有些参数可能像记录时间一样是静态的,但有些可以由用户定义。 在执行之前,立即将参数替换为实际值。

观看次数

搜索的结果是日志记录,即类似

2018-08-06 10:32:12.234 [Thread-1] DEBUG - Connection 1234 moved from state Q to state W \r?\n

虽然找到模板中定义的内容非常好,但最好将信息分成有用的部分。 例如,此表以简洁明了的方式表示该记录中的所有有用信息:

连接 1234 -> w ^

要提取这些信息,我们可以使用“查看”方法。 这意味着声明在日志记录中搜索的较小的正则表达式,并返回一条有关日志记录的信息。 就像该日志记录的视图一样。 将所有内容显示在表格中将使其更易于阅读。 表也​​可以按任何列排序。

排序与合并

使用模板进行此类搜索的最有效方法是使用线程池,并将每个线程分配给日志文件。 假设池中有3-4个线程,则搜索将加快3-4倍。 但是合并结果成为一个重要的问题。 这里可以有2个解决方案:

  1. 合并结果 。 我们需要确保结果按正确的顺序排列。 如果我们有3个日志文件,第一个覆盖10-12个小时,第二个12-14,第三个14-17,则这些文件的搜索结果必须以相同的顺序进行。 这称为合并。
  2. 排序结果 。 除了合并它们,我们还可以按日期和时间对其进行排序。 不太复杂但简单。

合并看起来是一种更高级的技术,它使我们可以保留记录的原始顺序。

工作流程

日志分析

最后的想法

在本文中达到这一点的每个人都必须困扰的问题是:是否有人试图实现所有这些? 答案是肯定的! 有一个基于Eclipse框架的工作应用程序,其中包括Spring XML配置和许多其他内容。 搜索对象模板的工作方式如本文所述。

这是Github链接:

https://github.com/xaltotungreat/regex-analyzer-0

为什么是0? 好吧,这本来应该是一个原型,但在某种程度上仍然是原型。 我称这个应用程序为REAL

[R egular
ËXpressions
分析仪 对于L OGS

假定用户具有一些如何导出Eclipse RCP应用程序或如何从Eclipse IDE中启动它的知识。 不幸的是,我没有足够的时间来编写有关它的任何好的文档。 默认情况下,它可以分析HBase日志,并且config文件夹中有很多示例。

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

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

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

相关文章

java 面试指南_Java面试参考指南–第1部分

java 面试指南JAVA面向对象的概念 Java in基于面向对象的概念&#xff0c;它允许更高级别的抽象以实际方式解决任何问题。 面向对象的方法将实际对象中的问题解决方案概念化&#xff0c;更易于在整个应用程序中重用。 例如椅子&#xff0c;风扇&#xff0c;狗&#xff0c;电脑…

创建一个安全的Spring REST API

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕&#xff1f; 尝试使用Okta API进行托管身份验证&#xff0c;授权和多因素身份验证。 “如果有用&#xff0c;它将被修改。” 这些智慧之言来自我的QA老师&#xff0c;他们…

java并发编程十 原子累加器和Unsafe

文章目录 原子累加器cas 锁原理之伪共享 UnsafeUnsafe CAS 操作 原子累加器 累加器性能比较 private static <T> void demo(Supplier<T> adderSupplier, Consumer<T> action) {T adder adderSupplier.get();long start System.nanoTime();List<Thread…

具有ELK的APIGEE API网关日志管理(Elastic Search,Logstash和Kibana)

在本文中&#xff0c;我们将看到如何使用 Elastic Search &#xff0c; Logstash 和 Kibana 管理APIGEE API网关生成的日志 。 下图突出显示了日志数据如何流经ELK堆栈以进行数据可视化和监视。 作为API网关的一部分&#xff0c;我们将使用MessageLogging策略在代理流&#xf…

java 80_【JavaWeb】80:js基础详解

今天是刘小爱自学Java的第80天。感谢你的观看&#xff0c;谢谢你。话不多说&#xff0c;开始今天的学习&#xff1a;JavaScript是一门编程语言&#xff0c;但凡是编程语言&#xff0c;其在基本语法上都是大同小异的。我们学了Java&#xff0c;那么再学习其它语言时&#xff0c;…

php manager iis 8,PHPManager2下载

PHP Manager 2.x 理论支持win10,win8,win7,Windows Server2008,Windows Server2012,Windows Server2012R2,Windows Server2016,,Windows Server2019与其对应的IIS版本.--PHP Manager 2.4 for IIS10,IIS8,IIS7 下载简单但功能强大具有独特功能的工具&#xff0c;可以处理所有细节…

企业知识库:从信息管理到知识创新的转变

在当今这个信息爆炸的时代&#xff0c;企业知识库的建设已经成为了企业持续发展的重要基石。从传统的信息管理到现代的知识创新&#xff0c;企业知识库的角色和功能也在不断地演变和升级。本文将探讨企业知识库的发展历程&#xff0c;以及如何实现从信息管理到知识创新的转变。…

php封装的数据库操作文件夹,PHP中对数据库操作的封装_php

现在我们把其封装在dbfz.inc中&#xff0c;其设计如下&#xff1a;$#60;?class dbInterface{ var $dbID1; //用于确定当前操作的数据库&#xff0c;当dbID为1代表mysql,当为 2代表 SQL Server&#xff0c;为3时为ODBC或其它。var $dbHost; //数据库所在主机域名var $dbUsernam…

Spring框架架构

这是Spring Framework Architecture的概述。 了解Spring Framework的各个组成部分如何组织以及如何相互联系。 如果您想了解什么是Spring框架及其功能&#xff0c;请阅读Spring框架简介 。 总览 Spring是一个模块化框架 。 它不是作为一个软件包或多个模块捆绑在一起的。 各种…

php中n12br,PHP常见字符串操作函数与用法总结

一、字符串的格式化1、字符串的格式化trim()函数可以去除字符串的开始位置和结束位置的空格&#xff0c;并将结果字符串返回&#xff0c;默认情况下去除的字符是换行符和回车符(\n和\r),水平和垂直制表符(\t和X0B)ltrim()函数只从字符的开始处(左边)去除空格rtrim()函数只从函数…

面向切面编程应用_应用面向方面的编程

面向切面编程应用1.引言 面向方面编程的主要目标是将跨领域关注点分离。 当我们谈论跨领域的关注时&#xff0c;我们指的是在我们的系统或应用程序中的多个地方使用的通用功能。 这些概念包括&#xff1a; 记录中 交易管理 错误处理 监控方式 安全 实现这种分离的方法是将…

centos 安装php扩展gd,linux(centos)下为php添加添加GD扩展

yum -y install libjpeglibjpeg-devel libpng libpng-devel freetype freetype-devel 安装依赖库yum -y install libjpeg-devel1.首先切换到php源码目录&#xff1a;/usr/local/php-5.6.29/ext/gd2.利用phpize生成gd扩展文件,/usr/local/php/bin/mipsel-linux-phpize, ls 或者 …

弹簧启动执行器教程

朋友您好&#xff0c;在本教程中&#xff0c;我们将学习弹簧执行器及其所有功能。 1.什么是弹簧执行器&#xff1f; 2.如何在Maven项目或Gradle项目中添加弹簧执行器&#xff1f; 3.创建一个具有Spring Actuator依赖项的Spring Boot项目。 4.使用弹簧执行器端点监视应用程序…

php xls 邮件,PHPMailer发送邮件

PHPMailer是一个封装好的PHP邮件发送类&#xff0c;支持发送HTML内容的电子邮件&#xff0c;以及图片附件&#xff0c;前提要设置好邮件服务器就能实现邮件发送功能。HTML首先我们先放置一个收件箱的输入框和一个发送邮件按钮&#xff1a;收件人&#xff1a;jQuery$(function()…

引导性GCP:带有Google Cloud Pub / Sub的Spring Cloud Stream

我最近在Sprint Central的工程博客上阅读了Josh Long的Bootiful GCP系列 &#xff0c;特别喜欢关于使用Google Cloud的Pub / Sub的第四部分 。 我受到该系列的启发&#xff0c;同时我还在为我的一个新项目评估Spring Cloud Stream。 我以为&#xff0c;我会继续讨论乔希&#x…

jdbc和jdbc驱动_JDBC布尔兼容性列表

jdbc和jdbc驱动有趣的是&#xff0c;布尔类型只是在SQL标准后期才引入&#xff0c;即SQL&#xff1a;1999 。 即使在今天&#xff0c;并非所有数据库本身都支持BOOLEAN或BIT类型。 最重要的是&#xff0c;我们仍然可以在Oracle中等待一段时间。 这是2002年以来关于该主题的“问…

IDE日志分析方法pt。 1个

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

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

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

从Commons CLI迁移到picocli

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

QuickBooks和Sage数据导出器

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