[golang]使用tail追踪文件变更

这篇具有很好参考价值的文章主要介绍了[golang]使用tail追踪文件变更。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

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

示例代码

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

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_END
	seek := &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)
	}
}

参考

  • 官方文档
  • https://blog.csdn.net/sinat_26682309/article/details/93858475

到了这里,关于[golang]使用tail追踪文件变更的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Golang链路追踪:实现高效可靠的分布式系统监控

    在当今互联网应用的架构中,分布式系统已经成为主流。分布式系统的优势在于能够提供高可用性、高并发性和可扩展性。然而,随着系统规模和复杂性的增加,系统的监控和调试变得越来越困难。为了解决这个问题,链路追踪技术应运而生。 本文将介绍链路追踪的概念和原

    2024年02月08日
    浏览(34)
  • Linux 终端命令之文件浏览(4) head, tail

    cat, more, less, head, tail,此五个文件浏览类的命令皆为外部命令。 英文帮助 NAME        head - output the first part of files SYNOPSIS        head [OPTION]... [FILE]... DESCRIPTION        Print the first 10 lines of each FILE to standard output.  With more than one FILE, precede each with a header giving the file name.    

    2024年02月11日
    浏览(33)
  • [golang 流媒体在线直播系统] 1.直播的简单介绍以及借助腾讯云直播实现在线直播

    直播,应该不陌生,有电视直播、网络主播、游戏直播、体育直播、在线教育直播等等,那么要实现在线直播的话就 必须要有 “ 流媒体在线直播服务器 ”. “流媒体在线直播服务器 ”不仅可以 实现游戏、赛事、电商、媒体、教育等行业的直播, 还可以实现 农场 监控直播 、

    2024年02月10日
    浏览(29)
  • 目标追踪(tracking)简介

    目标追踪是指通过计算机视觉技术,检测和追踪视频或图像中的特定目标的位置和动态变化。目标可以是人、车辆、动物或其他感兴趣的物体。目标追踪在许多领域都具有广泛的应用,如安防监控、交通监管、自动驾驶、虚拟现实等。 目标追踪通常涉及以下几个步骤: 目标

    2024年02月22日
    浏览(28)
  • Golang编写客户端SDK,并开源发布包到GitHub,供其他项目import使用

    如果希望其他项目能够使用该SDK,可以将该SDK打包为一个Go模块,并将其发布到Go模块仓库中。这将使其他项目能够通过Go的模块依赖机制来使用该SDK。可以轻松地引用和使用你的代码。 登录到你的 GitHub 帐户。 在 GitHub 主页点击右上角的加号(+),然后选择 “New repository”(

    2024年02月09日
    浏览(34)
  • Linux命令200例:tail用来显示文件的末尾内容(常用)

    🏆作者简介,黑夜开发者,全栈领域新星创作者✌。CSDN专家博主,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于专栏:Linux命令大全。 🏆本专栏我们会通过 具体的系统的命令讲解 加上

    2024年02月12日
    浏览(33)
  • Spring Boot 集成 WebSocket 实例 | 前端持续打印远程日志文件更新内容(模拟 tail 命令)

    这个是我在 CSDN 的第一百篇原则博文,留念😎 先说下项目结构,后端基于 Spring Boot 3,前端为 node.js 开发的控制台程序。现在希望能够在前端模拟 tail 命令,持续输出后端的日志文件。 这个方案实施较为简单,通过前端不断(定时)发起请求,并携带已读的内容坐标(posi

    2024年03月18日
    浏览(36)
  • 【Linux】:文件查看 stat、cat、more、less、head、tail、uniq、wc

    🎥 屿小夏 : 个人主页 🔥个人专栏 : Linux深造日志 🌄 莫道桑榆晚,为霞尚满天! 在Linux系统中,文件是信息的核心。深入了解和操作文件内容是每个系统管理员和开发者必备的技能。本文将为您揭开Linux文件魔法的面纱,介绍一系列强大的命令,包括stat、cat、more、less、

    2024年04月28日
    浏览(31)
  • Linux :: 【基础指令篇 :: 文件内容操作:(4)】:: head / tail 指令 :: 查看前后 n 行内容 | 指定查看文件的部分内容

    前言:本篇是 Linux 基本操作篇章的内容! 笔者使用的环境是基于腾讯云服务器:CentOS 7.6 64bit。 学习集: C++ 入门到入土!!!学习合集 Linux 从命令到网络再到内核!学习合集 注: 本文涉及文件内容查看或编辑,故有预先准备的测试示例,若读者无测试示例,可参照 第 0

    2024年02月08日
    浏览(44)
  • vim、awk、tail、grep的使用

    awk命令的参数选项及说明 参数选项 解释说明 -c 只统计匹配的行数 -v 排除匹配结果 -n 显示匹配行与行号 -i 不区分大小写 -E 使用egrep命令 -color = auto 为grep过滤结果添加颜色 -w 只匹配过滤的单词 -o 只输出匹配的内容

    2024年02月14日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包