golang交互式JSON日志查看与分析插件库json-log-viewer的使用
Golang交互式JSON日志查看与分析插件库json-log-viewer的使用
JSON Log Viewer简介
JSON Log Viewer是一个用于查看和分析复杂结构化JSON日志的交互式工具。
安装方式
使用Homebrew安装
brew install hedhyw/main/jlv
独立二进制文件、DEB或RPM包
可以从GitHub Releases页面下载最新版本。
基本使用示例
下面是一个使用json-log-viewer的基本示例:
package main
import (
"log"
"github.com/hedhyw/json-log-viewer"
)
func main() {
// 创建一个新的日志查看器实例
viewer, err := jsonlogviewer.New(
// 指定日志文件路径
jsonlogviewer.WithLogsPath("example.log"),
// 设置自定义标题
jsonlogviewer.WithTitle("My App Logs"),
)
if err != nil {
log.Fatal(err)
}
// 运行日志查看器
if err := viewer.Run(); err != nil {
log.Fatal(err)
}
}
高级配置示例
package main
import (
"log"
"time"
"github.com/hedhyw/json-log-viewer"
)
func main() {
// 创建带有更多配置选项的查看器
viewer, err := jsonlogviewer.New(
jsonlogviewer.WithLogsPath("/var/log/myapp/*.log"),
jsonlogviewer.WithTitle("Production Logs"),
jsonlogviewer.WithRefreshInterval(5*time.Second),
jsonlogviewer.WithTimeFormat(time.RFC3339),
jsonlogviewer.WithFieldsToDisplay("level", "message", "timestamp"),
)
if err != nil {
log.Fatal(err)
}
// 添加自定义颜色主题
viewer.SetColorTheme(jsonlogviewer.ColorTheme{
Background: "#282a36",
Text: "#f8f8f2",
SelectedText: "#ffffff",
SelectedTextBg: "#44475a",
HighlightText: "#ffb86c",
HighlightTextBg: "#44475a",
Border: "#6272a4",
TableHeader: "#bd93f9",
TableHeaderBg: "#44475a",
TableRow: "#f8f8f2",
TableRowBg: "#282a36",
TableAltRow: "#f8f8f2",
TableAltRowBg: "#343746",
})
if err := viewer.Run(); err != nil {
log.Fatal(err)
}
}
主要功能
- 实时日志监控和刷新
- 支持多文件日志查看
- 可自定义的日志字段显示
- 强大的搜索和过滤功能
- 支持自定义颜色主题
- 交互式日志浏览体验
文档资源
- 功能说明
- 从源码安装指南
- 使用说明
- 自定义配置
- 资源列表
- 贡献指南
- MIT许可证
这个工具非常适合开发人员和运维人员查看和分析JSON格式的应用程序日志,提供了比传统命令行工具更直观和强大的交互体验。
更多关于golang交互式JSON日志查看与分析插件库json-log-viewer的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html
1 回复
更多关于golang交互式JSON日志查看与分析插件库json-log-viewer的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
Golang交互式JSON日志查看与分析插件库json-log-viewer
json-log-viewer是一个用于查看和分析JSON格式日志的Golang交互式工具库,它提供了命令行界面来浏览、搜索和过滤JSON日志数据。
主要特性
- 交互式命令行界面
- 支持JSON日志的实时查看
- 提供搜索和过滤功能
- 支持日志级别高亮显示
- 可扩展的插件架构
安装
go get github.com/yourusername/json-log-viewer
基本使用示例
package main
import (
"os"
"github.com/yourusername/json-log-viewer/pkg/viewer"
)
func main() {
// 创建查看器实例
logViewer := viewer.NewJSONLogViewer()
// 从文件加载日志
err := logViewer.LoadFromFile("example.log")
if err != nil {
panic(err)
}
// 启动交互式界面
err = logViewer.Start()
if err != nil {
panic(err)
}
}
高级功能示例
1. 自定义过滤条件
package main
import (
"github.com/yourusername/json-log-viewer/pkg/viewer"
"github.com/yourusername/json-log-viewer/pkg/filter"
)
func main() {
logViewer := viewer.NewJSONLogViewer()
// 添加自定义过滤器
logViewer.AddFilter("error-only", filter.NewLevelFilter("error"))
logViewer.AddFilter("warn-and-above", filter.NewLevelRangeFilter("warn", ""))
logViewer.LoadFromFile("app.log")
logViewer.Start()
}
2. 实时日志监控
package main
import (
"time"
"github.com/yourusername/json-log-viewer/pkg/viewer"
)
func main() {
logViewer := viewer.NewJSONLogViewer()
// 启用实时监控模式
logViewer.SetLiveMode(true)
logViewer.SetRefreshInterval(2 * time.Second)
logViewer.WatchFile("app.log")
logViewer.Start()
}
3. 自定义显示格式
package main
import (
"github.com/yourusername/json-log-viewer/pkg/viewer"
"github.com/yourusername/json-log-viewer/pkg/formatter"
)
func main() {
logViewer := viewer.NewJSONLogViewer()
// 自定义显示格式
customFormatter := formatter.NewCustomFormatter(
"[{level}] {time} {message}",
formatter.WithFieldMap(map[string]string{
"time": "timestamp",
"message": "msg",
}),
)
logViewer.SetFormatter(customFormatter)
logViewer.LoadFromFile("app.log")
logViewer.Start()
}
交互式命令
启动后,可以使用以下命令:
up/down
- 上下移动光标enter
- 展开/折叠JSON详情/
- 开始搜索f
- 应用过滤器q
- 退出r
- 刷新日志
插件开发示例
package main
import (
"github.com/yourusername/json-log-viewer/pkg/viewer"
"github.com/yourusername/json-log-viewer/pkg/plugin"
)
// 自定义插件示例
type StatsPlugin struct{}
func (p *StatsPlugin) Name() string {
return "stats"
}
func (p *StatsPlugin) Execute(logs []map[string]interface{}) {
// 实现统计逻辑
errorCount := 0
for _, log := range logs {
if level, ok := log["level"].(string); ok && level == "error" {
errorCount++
}
}
println("Total errors:", errorCount)
}
func main() {
logViewer := viewer.NewJSONLogViewer()
// 注册插件
logViewer.RegisterPlugin(&StatsPlugin{})
logViewer.LoadFromFile("app.log")
logViewer.Start()
}
性能优化建议
- 对于大日志文件,使用流式处理
- 限制内存中保留的日志条目数
- 使用索引加速搜索
logViewer := viewer.NewJSONLogViewer(
viewer.WithMaxEntries(10000), // 限制内存中的条目数
viewer.WithStreaming(true), // 启用流式处理
)
json-log-viewer是一个功能强大且灵活的工具,特别适合开发人员在本地环境中快速查看和分析JSON格式的日志数据。通过其插件系统,可以轻松扩展功能以满足特定需求。