golang交互式JSON日志查看与分析插件库json-log-viewer的使用

Golang交互式JSON日志查看与分析插件库json-log-viewer的使用

JSON Log Viewer简介

JSON Log Viewer是一个用于查看和分析复杂结构化JSON日志的交互式工具。

Animation

安装方式

使用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日志数据。

主要特性

  1. 交互式命令行界面
  2. 支持JSON日志的实时查看
  3. 提供搜索和过滤功能
  4. 支持日志级别高亮显示
  5. 可扩展的插件架构

安装

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()
}

性能优化建议

  1. 对于大日志文件,使用流式处理
  2. 限制内存中保留的日志条目数
  3. 使用索引加速搜索
logViewer := viewer.NewJSONLogViewer(
	viewer.WithMaxEntries(10000),  // 限制内存中的条目数
	viewer.WithStreaming(true),    // 启用流式处理
)

json-log-viewer是一个功能强大且灵活的工具,特别适合开发人员在本地环境中快速查看和分析JSON格式的日志数据。通过其插件系统,可以轻松扩展功能以满足特定需求。

回到顶部