开发者游戏:RegExp 和 log4j 解析
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;演示链接: http://116.62.199.48:7070 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 90w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 3100+ 小伙伴加入学习 ,欢迎点击围观
使用虚拟字段从 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. 在 XpoLog Center 中,添加一个新日志。 (请参阅我之前的帖子中的说明。)填写详细信息后,单击 “下一步” 进入 “日志模式” 屏幕。
-
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}
-
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 模式。请继续关注,或查看我们的“剧透”以获取 完整教程 。