开发者游戏:RegExp 和 log4j 解析

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 63w+ 字,讲解图 2808+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2200+ 小伙伴加入学习 ,欢迎点击围观

使用虚拟字段从 log4j 日志中提取有价值的数据

在我们最近升级到 XpoLog V6 时,我们增强了 log4j 分析的功能。在本系列文章中,我将介绍一些您可以从 XpoLog V6 的新功能和增强功能中受益的方法。我将主要关注如何从 log4j 事件日志中获取最有价值的信息。如果您喜欢一次阅读所有帖子,我们还准备了 一个实践指南

将 log4j 日志传输到 XpoLog Center 并在其中正确定义后,您可以通过对 log4j 数据运行分析搜索来排除 java 应用程序的故障,测量应用程序性能,创建自己的 AppTags 以更好地监控,并创建仪表板、图表、幻灯片-显示,并使用其他可视化工具进行最大程度的日志分析。

这篇文章将向您展示如何在 XpoLog 中定义 log4j 日志,以创建最具可读性的数据,从而允许 XpoLog 对您的日志执行非常详细的分析。我还将向您展示一个示例,说明如何使用 RegularExpression 从您的消息中虚拟提取特定数据,以允许 XpoLog 对您的数据执行更精确的解析。

如果您想在阅读时按照我的步骤操作,可以 免费下载 XpoLog V6

在 XpoLog Center 中定义模式

要让 XpoLog 访问您的文件并从中提取数据,请使用名称、模式和数据模式定义记录器,然后在 XpoLog 中心定义日志模式。

例如:

#记录器定义

log4j.logger.mylog=错误,mylog

log4j.logger.com.mylog.logcollection=错误,mylog

……

#mylog 的 Appender 数据

……

log4j.appender.mylog.layout=org.apache.log4j.PatternLayout

log4j.appender.mylog.layout.ConversionPattern=[%d][%t] [%p] [%c] [%l] %m%n


d = 日期, t = 线程, p = 优先级, c = 类, l = 方法, m = 消息, n = 新行)

在 XpoLog Center 中定义日志模式:

  1. 1. 在 XpoLog Center 中,添加一个新日志。 (请参阅我之前的帖子中的说明。)填写详细信息后,单击 “下一步” 进入 “日志模式” 屏幕。

  2. 2. 模式编辑器 向导 中,定义日志模式。


Pattern Editor 中单击 Manual 并编辑 XpoLog 数据模式以符合 log4j 布局:


A。 [%d] =[{date:Date,locale=en,yyyy-MM-dd HH:mm:ss,SSS}]

b. [%t] = [{文本:线程}]

C。 [%p]= [{priority:Priority,DEBUG;INFO;WARNING;ERROR;FATAL}]

d. [%c]= [{字符串:类}]

e. [%l]= [{string:Method}({text:Source}:{number:LineNumber})]

F。 %m = {字符串:消息}

G。 %n = 换行



我们示例中的 XpoLog 模式将是:

[{date:Date,locale=en,yyyy-MM-ddHH:mm:ss,SSS}] [{text:Thread}] [{priority:Priority,DEBUG;INFO;WARNING;ERROR;FATAL}][{string :Class}] [{string:Method}({text:Source}:{number:LineNumber})]{string:Message}

  1. 3. 单击 保存

您还可以在添加日志后编辑模式,我将在下一篇文章中详细介绍。

从您的消息中虚拟提取特定数据

如果您在数据传输之前使用正则表达式,XpoLog 还可以从消息中提取数据。

在不使用 RegularExpression 的情况下,消息在 添加日志 屏幕的 LogPattern 部分中可能看起来像这样:

Pattern Editor 中,您所看到的只是 {string:Message}










如果您使用正则表达式来提取出现在单词“Manager”之后的任何单词, AddLog 屏幕的 Log Pattern 部分将如下所示:

Pattern Editor 中,您现在将看到:

{regexp:HTMLManager state,refName=Message,HTMLManager:(\w+)}{string:Message}

在下面的 日志记录分析结果 部分,XpoLog 为您希望提取的数据添加了列 HTMLManager 状态











在 XpoLog Center 的 管理器界面 中,您可以在其中查看日志,您还将看到这个额外的列 HTMLManager state ,用于提取的数据:





通过将 HTMLManager 状态 提取到一个新的虚拟字段中,我们现在可以测量和监视 HTMLManager 状态 性能和活动。

在下一篇文章中,我将展示如何在通过 SysLog 向 XpoLog 发送日志事件和日志消息时定义和编辑 log4j 模式。请继续关注,或查看我们的“剧透”以获取 完整教程

相关文章