#regex #tui #logging #turborepo #log-line #log-parser

app prism-rs

prism 是一个将嘈杂的日志输出根据正则表达式分组的小工具。主要编写来与 turborepo(https://turborepo.org/) 一起使用,但也支持根据自定义的正则表达式解析日志行

1 个不稳定版本

0.1.0 2022年10月9日

1#turborepo

MIT 许可证

21KB
514

prism

prism 的目标是获取进程的输出并将其根据正则表达式分割成桶,然后使用漂亮的 TUI 单独查看每个桶的内容。

prism 主要用于管理 turborepo(https://turborepo.org/) 的输出,但它可以根据自定义的正则表达式分割输出(默认支持 turborepo 输出的正则表达式),因此它可以用于任何东西;它甚至可以在运行时显示自己的日志输出。

这一切可能听起来有点模糊,所以最好用一些演示来解释

使用模拟的 turborepo 项目运行它:[运行演示](https://asciinema.org/a/ln4BtwWKPMUqAaDycyswu2lXz)

在其自己的日志输出上运行:[运行演示](https://asciinema.org/a/X22mGKcchw8BVeyShtwscZrLL)

特性

  • 自定义正则表达式
  • 颜色支持

用法

注意:这是 alpha 级别的软件。请在自己的风险下使用。

$ prism -p <prefix_regex> <command>

其中 prefix_regex 是一个至少有两个捕获组的正则表达式。第一个捕获组将是前缀,第二个是消息。

在 TUI 中,使用 j/k 导航前缀,使用 tab 在消息、stderr 和不可解析的消息之间循环。

示例

使用默认正则表达式运行 yarn dev

$ prism yarn dev

使用解析类似 DEBUG This is a message 的行的正则表达式运行 cat file

$ prism -p '^([A-Z]*?) (.*)' cat file

使用命令行标志运行命令

$ prism "tail -f file"

用它来分割自己的日志输出(注意:如果您想尝试这个,由于“递归”性质,日志文件会非常快地增长)

$ RUST_LOG=debug prism -p '\[.* ([A-Z]+ .*?)\] (.*)' "tail -f log" 2>log

已知问题

  • 当与 turborepo 一起使用时,子进程无法可靠地终止
  • 退出时,终端状态通常不佳,需要执行 reset
  • 默认正则表达式可能不是很好

待办事项

  • 滚动消息
  • 测试
  • 可配置的回滚限制
  • 显示进程已退出的指示器

依赖项

~9–19MB
~245K SLoC