#filter #log #regex #analysis #log-entries #search

bin+lib log-analyzer

log analyzer 是一个用于读取、过滤和搜索日志的 crate

4 个版本

0.1.3 2022年6月5日
0.1.2 2022年6月4日
0.1.1 2022年6月4日
0.1.0 2022年6月4日

#686 in 调试


用于 2 个 crate(通过 terminal-ui

Unlicense 或 MIT

76KB
2K SLoC

Log Analyzer Pro (lap)

一个用 Rust 编写的强大的终端日志分析应用程序

demo

功能

  • 从文件或套接字读取日志。它实时更新新的条目
  • 可选地使用正则表达式格式化日志,以匹配日期、时间戳、应用程序、严重性、函数、有效负载等类别,便于阅读和过滤
  • 包括、排除或标记正则表达式过滤器
  • 正则表达式搜索

安装

cargo install log-analyzer-pro

二进制可执行文件是 lap

用法

菜单导航

使用 Shift + 箭头键⇥ Tab 在应用程序菜单之间导航并更改焦点。

  • 左: ⇧ Shift +
  • 右: ⇧ Shift +
  • 上: ⇧ Shift +
  • 下: ⇧ Shift +

内部导航

当焦点在选项卡、列表或表格上时,使用 箭头键 来更改选择

  • 左:
  • 右:
  • 上:
  • 下:

调整模块大小

  • 左调整大小: ⇧ Shift + A
  • 右调整大小: ⇧ Shift + D
  • 上调整大小: ⇧ Shift + W
  • 下调整大小: ⇧ Shift + S

源模块

  • +i 来添加新的日志

过滤器模块

  • 添加新的过滤器:使用 +i
  • 使用 内部导航 选择过滤器
  • 编辑选定的过滤器:使用 e

日志和搜索结果模块

  • 使用 内部导航 在日志中导航并应用水平滚动

  • ⌥ OptionAlt + 内部导航 进行快速滚动

  • Page UpPage Down 进行分页 1000 行

  • 导航到索引(或最接近的):使用 ⇧ Shift + G

  • 切换列的 ON/OFF

    • i: 索引
    • d: 日期
    • d: 时间戳
    • a:应用
    • s:严重性
    • f:函数
    • p:有效载荷
  • 如果您处于搜索结果中,您可以通过按日志模块中的选择索引:⏎ Enter

搜索高亮显示

您可以使用正则表达式的分组来突出显示搜索结果。分组的名称应该是您想要突出显示匹配项的颜色。可用的颜色列表如下

  • 黑色
  • 白色
  • 红色
  • 绿色
  • 黄色
  • 蓝色
  • 品红色
  • 青色
  • 灰色
  • 深灰色
  • 浅红色
  • 浅绿色
  • 浅黄色
  • 浅蓝色
  • 浅品红色
  • 浅青色

搜索示例

(?P<GREEN>success_ok).*(?P<BLUE>message)

自定义

您可以使用JSON文件通过命令行参数来自定义应用程序的外观,并预加载格式和过滤器

lap --settings path_to_settings_file.json
  • 主色:RGB元组(红,绿,蓝)
  • 格式:别名和正则表达式列表
    • 正则表达式用于将行格式化为可用列。为此,您需要捕获组。有效的组包括
      • 日期
      • 时间戳
      • 应用
      • 严重性
      • 函数
      • 有效载荷
  • 过滤器:别名、操作和过滤器列表
    • 操作:以下之一{INCLUDE, EXCLUDE, MARKER}
    • 过滤器:字典{column_name: regex and color: RGB元组 (red, green, blue)}。所有字段都是可选的

示例文件

{
    "primary_color": [0, 225, 255],
    "formats": [
        {
            "alias": "Default",
            "regex": "(?P<PAYLOAD>.*)"
        },
        {
            "alias": "Application",
            "regex": "(?P<DATE>[\\d]{4}-[\\d]{2}-[\\d]{2} [\\d]{2}:[\\d]{2}:[\\d]{2},[\\d]{3}) - \\[(?P<SEVERITY>[\\w]*)\\] - \\[([ \\w]{4})\\] - \\[(?P<TIMESTAMP>[ \\d]*)\\] (?P<PAYLOAD>.*)"
        },
        {
            "alias": "System",
            "regex": "(?P<DATE>[\\d]{4}-[\\d]{2}-[\\d]{2} [\\d]{2}:[\\d]{2}:[\\d]{2}.[\\d]*) \\((?P<APP>[\\w\\d]*)[/ ]?(?P<FUNCTION>.*)\\) (?P<PAYLOAD>.*)"
        }
    ],
    "filters": [
        {
            "alias": "System",
            "action": "MARKER",
            "filter": {
                "app": "system",
                "color": [100, 100, 0]
            }
        },
        {
            "alias": "SIGKILL",
            "action": "MARKER",
            "filter": {
                "payload": "SIGKILL",
                "color": [255, 0, 0]
            }
        }
    ]
}

许可证

双许可协议下:MIT或UNLICENSE

依赖关系

~18–33MB
~407K SLoC