当前位置: 首页 > java >正文

golang使用tail追踪文件变更

简介

借助 github.com/hpcloud/tail ,可以实时追踪文件变更,达到类似shell命令tail -f的效果。

代码

以下示例代码用于实时读取nginx的access.log日志文件,读取到后输出到控制台。如果nginx日志做了json格式化,还可以解析读取到的内容,对日志进行更多处理,比如日志内容写入数据库、做日志告警等,对于访问量较小的系统来说,这样就不需要消耗很多资源去搭建ELK、Loki等专门的日志监控系统。

package main
import ("flag""fmt""io""os""github.com/hpcloud/tail"
)
var (logfile = flag.String("f", "access.log", "日志文件路径")
)
func main() {flag.Parse()// 判断文件是否存在if _, err := os.Stat(*logfile); os.IsNotExist(err) {fmt.Printf("Error! %s not found\n", *logfile)os.Exit(1)}// 不从文件开始读, 而是从文件当前末尾开始读// Go 1.20推荐使用 io.SeekEnd, 老版本可能需要改为os.SEEK_ENDseek := &tail.SeekInfo{Offset: 0, Whence: io.SeekEnd}t, err := tail.TailFile(*logfile, tail.Config{Follow:   true,Location: seek,})if err != nil {fmt.Println(err)}for line := range t.Lines {fmt.Println(line.Text)}
}

参考

  • golang
http://www.xdnf.cn/news/13957.html

相关文章:

  • 解决 Java 与 JavaScript 之间特殊字符传递问题的终极方案
  • ReentrantLock和RLock
  • 新增一个战斗角色
  • n8n实战:自动化生成AI日报并发布
  • USB串口通信、握手协议、深度学习等技术要点
  • window显示驱动开发—为 DirectX VA 2.0 扩展模式提供功能(一)
  • leetcode 2616. 最小化数对的最大差值 中等
  • 【备忘】PHP web项目一般部署办法
  • 《数据安全法》学习(一)
  • 某靶场CTF题目:利用Apache APISIX默认Token漏洞(CVE-2020-13945)获取Flag
  • 2025虚幻角色模型相关笔记
  • Linux用户管理进阶:权限体系深度剖析与实战优化方案
  • 题目类型——左右逢源
  • Python-Flask实现登录
  • PRUD币将于6月16日正式上线欧易Web3交易所,市场热度持续飙升
  • 【Qt/数据结构 QMap是什么类型的数据结构?】
  • 《第一章-初入江湖》 C++修炼生涯笔记(基础篇)C++初识
  • Rust高级抽象
  • Mysql 忘记密码后如何修改
  • 稀土化合物在生态环境的应用
  • 制造业网络安全的挑战与应对策略
  • 德瑞新能源“天佑”车队再征雪域 中尼绿色丝路开启新程
  • 如何在 Android 和 iPhone 上发送群组文本
  • 【常见排序算法】java 代码实现
  • Power Query动态追加查询(对文件夹下文件汇总)
  • WebSocket 前端断连原因与检测方法
  • Bean对象不同的方式注入,是不同的annotation接口描述
  • Java单元测试
  • 【走进Golang】测试SDK环境搭建成功,配置path环境变量
  • 深入剖析AI大模型:Prompt 开发工具与Python API 调用与技术融合