完善的数据解析 - Log4j 模式

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

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

XpoLog 的更新版本已经在这里,不会忽略任何原始数据,无论它看起来多么小或微不足道。在本系列文章中,我将介绍您可以从 XpoLog V6 的新功能和增强功能中受益的一些方法。我将主要关注如何从 log4j 事件日志中获取最有价值的信息。

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

这篇文章将向您展示如何定义和编辑您的事件和日志模式,在它们到达 XpoLog 中心之前和之后,当它们通过 SysLog 发送时。通过创建最易读的数据,您将允许 XpoLog 对您的日志执行最详细的分析。为了更轻松地跟随我的步伐,您可以 免费下载该软件

由于日志是以自由格式编写的,XpoLog 有一个先进的内置机制来检测传入日志的结构或模式。作为用户,您可以编辑和微调这些模式以满足您的需要。

在 SysLog Appender 中定义模式

通过 SysLog 将事件发送到 XpoLog 时,请确保在配置 log4j SysLog appender 时创建详细的转换模式。这是一个例子:

#记录器定义

log4j.logger., 系统日志

#appender 系统日志的数据

log4j.appender..apache.log4j.net.SyslogAppender

log4j.appender.SYSLOG..0.0.1

log4j.appender.SYSLOG..apache.log4j.PatternLayout

log4j.appender.SYSLOG.layout.conversionPattern=[%t] %c - %m%n

log4j.appender.SYSLOG。

t = 线程, c = 类, m = 消息, n = 新行)

SysLog appender 会将此事件记录器写入 SysLog。 请记住在 XpoLog Center 中定义一个 SysLog Listener 帐户。 有关如何执行此操作的说明,请参阅我之前的文章。

到达 XpoLog Center 的事件是在内部写入的。下面是它们由 XpoLog SysLog 侦听器创建时的样子:

XPLG:[1436716542132] [local1] [INFO] [test-1] []: [http-30303-Processor24] audit - [Master] [-] [LOGIN] [login/logout] [SECURITY] [http-30303- Processor24][-][-][-][-]释放用户admin

XPLG:[1436716542140] [local1] [INFO] [test-1] []: [http-30303-Processor24] 审计 - [Master] [Admin] [LOGIN] [login/logout] [SECURITY] [http-30303- Processor24] [EDA6FECA79A7BBB4480BAFC0FFB911F1] [administrators] [127.0.0.1] [127.0.0.1] 使用用户名 admin 登录 ok

最开始的文字是 XpoLog Syslog 侦听器添加的额外数据。 SysLog 文件中文本的其他部分对应于您在 log4j SysLog 附加程序中创建的布局。

一旦数据到达 XpoLog,就会创建一个具有默认 SysLog 模式的日志:

XPLG:[{timestamp:Timestamp,MM/dd/yyyy HH:mm:ss.SSS}] [{text:Facility}] [{priority:Level,DEBUG;INFO;WARN;ERROR;FATAL}] [{text:源设备}] {block,start,}{string:Message}

编辑日志并设置模式以反映您在 log4j 配置中定义的布局。

在 XpoLog 中编辑日志中的模式:

  1. 在 XpoLog Center 中,转到 Administration 并在左侧边缘的树中的 Folders and Logs 下找到日志。右键单击日志并选择 编辑
  2. 单击 Next 进入 Log Pattern 部分。可以在 Pattern Editor Pattern1 字段中编辑该模式,或者您可以通过单击 New 选项卡在现有模式之外添加一个新模式。
  3. “手动” 按钮(最右侧)和 “向导” 按钮之间切换以查看任一版本的模式。您可以通过单击 “新建” 选项卡添加任意数量的模式。 XpoLog 会将所有这些模式保存为即将发布的日志的模板。

  4. 单击 保存

在下面的屏幕截图中,您可以看到如何定义日志数据模式。它显示在 Pattern1 字段中。此日志的模式如下:

XPLG:[{timestamp:Timestamp,MM/dd/yyyy HH:mm:ss.SSS}] [{text:Facility}] [{priority:Level,DEBUG;INFO;WARN;ERROR;FATAL}] [{text:源设备}] {block,start,}{text:Application Name}[{text:Process Id}]: {block,end,}{string:Message}

大多数模式,直到并包括 {block,end,} 都是 SysLog 协议的一部分,并作为消息的前缀——它包含 SysLog 时间戳、设施、优先级和源设备。

如前所述,您可以在发送事件日志后在 XpoLog Center 中编辑模式。如果您的消息都遵循相同的结构,我们建议进一步编辑模式以包含此结构,以接收更精确的解析。这是上面显示的日志的更精确的模式:

XPLG:[{timestamp:Timestamp,MM/dd/yyyy HH:mm:ss.SSS}] [{text:Facility}] [{priority:Level,DEBUG;INFO;WARN;ERROR;FATAL}] [{text:源设备}] {block,start,}{text:Application Name}[{text:Process Id}]: {block,end,}[{text:ServerIp}] [{text:User,User}] [{choice :Action Type,LOGIN;VIEW;CHANGE}] [{text:Action description,Action description}] [{choice:Context,LOGS;FOLDERS;VERIFIERS;CONFIGURATION;SECURITY;REPROTS;TASKS;JOBS;NODES;SEARCH_ENGINE}] {字符串:消息}

以下屏幕截图显示了与上面相同的日志,经过编辑。您可以看到原始消息已拆分为相关的列。

请注意,通过创建最易读的数据,您将从 XpoLog 收到最详细的日志分析。

在我的下一篇文章中,我将讨论如何使用 AppTags 标记日志,以便更轻松地监控、故障排除和搜索。请继续关注或直接转到我们的 动手指南