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

app log-analyzer-pro

Log Analyzer Pro是一款命令行应用程序,为分析软件日志提供强大的过滤和搜索功能。日志可以来自日志文件(如果这些文件被修改,则实时更新)或套接字连接

4个稳定版本

1.0.3 2022年6月5日
1.0.2 2022年6月4日

#408 in 调试

Unlicense OR MIT

8MB
2.5K SLoC

Log Analyzer Pro (lap)

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

demo

特性

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

安装

cargo install log-analyzer-pro

二进制可执行文件为lap

用法

菜单导航

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

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

内部导航

当焦点在标签、列表或表格上时,使用 箭头 更改选择

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

内部导航

当焦点在标签、列表或表格上时,使用 箭头 更改选择

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

调整模块大小

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

源模块

  • +i 添加新日志

过滤器模块

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

日志 & 搜索结果模块

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

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

  • Page UpPage Down 键翻页 1000 行

  • 跳转到索引(或最近的一个):⇧ Shift + G

  • 切换列的显示/隐藏

    • 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: 正则表达式和颜色: RGB 元组 (红色, 绿色, 蓝色)}。所有字段都是可选的

示例文件

{
    "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

依赖项

~21–37MB
~464K SLoC