cc
发布于 2025-12-30 / 2 阅读
0
0

轻量级日志监控工具 - filewatch

高性能Go语言日志收集库,支持实时监控、断点续传和灵活配置

🚀 项目地址: filewatch

欢迎star支持!

核心特性

• 智能文件监控 - 自动读取目录下所有文件(包括新增文件)

• 灵活过滤规则 - 支持正则表达式匹配文件名

• 断点续传 - 基于offset机制,重启后从上次位置继续读取

• 高性能设计 - 轻量级实现,资源占用低

快速开始

package main

import (
    "fmt"
    "github.com/ChangSZ/filewatch"
)

func main() {
    watcher := filewatch.NewWatcher()
    watcher.SetCompleteMarker("***")        // 设置完成标记
    watcher.SetFileRegexp(`\d+.log`)        // 匹配数字.log文件
    watcher.SetWatchDir("./logs")           // 监控目录
    watcher.SetRemoveAfterComplete(true)    // 完成后删除文件

    // 异步处理日志
    go func() {
        for logInfo := range watcher.GetResChan() {
            fmt.Printf("%+v\n", logInfo)
            // 这里可以对接 Kafka、ES、gRPC 等
        }
    }()

    watcher.Start()
}

集成方案

通过 watcher.GetResChan() 获取日志流,可轻松对接:

- 消息队列:Kafka、RabbitMQ

- 搜索引擎:Elasticsearch、OpenSearch

- 远程服务:gRPC、HTTP API

- 存储系统:数据库、对象存储

性能表现

测试环境:4核8G Kubernetes Pod

负载情况:50个文件 × 1600行/秒 = 80,000行/秒

资源占用:CPU ~35%,内存 ~10%(实际使用量,扣除其他业务)

处理效果:实时无延迟处理

适合中小规模日志收集场景,性能表现优异。


评论