Go使用zap和lumberjack库,实现每小时间轮转日志文件

news/2025/3/10 10:56:44/文章来源:https://www.cnblogs.com/hailexuexi/p/18619450

创建一个文件夹,命名为  loggerDemo 打开这个文件夹

打开终端,点击左下角 叉和感叹号

在弹出的窗口中点击 TERMINAL 进入终端(也可以使用快捷键 CTRL+`  直接打开)

 初始化 Go 的 Module

go mod init loggerDemo

点击文件创建图标创建文件

创建一个名为 main.go 的文件 ,按下 回车 确认

main.go

package mainimport ("fmt""time""loggerDemo/logger" // 替换为你的模块路径
)func main() {// 初始化日志记录器logger, err := logger.NewLogger()if err != nil {fmt.Println("Failed to initialize logger:", err)return}defer logger.Sync() // 确保所有日志都被写入// 使用日志记录器for {logger.Info("This is an info log entry")time.Sleep(10 * time.Second) // 模拟业务逻辑
    }
}

再创建一个文件夹 logger 在这个文件夹中创建 logger.go

logger.go

package loggerimport ("time""go.uber.org/zap""go.uber.org/zap/zapcore""gopkg.in/natefinch/lumberjack.v2"
)// NewLogger 创建一个新的 zap 日志记录器,配置了日志轮转
func NewLogger() (*zap.Logger, error) {encoderConfig := zapcore.EncoderConfig{TimeKey:        "time",LevelKey:       "level",NameKey:        "logger",CallerKey:      "caller",MessageKey:     "msg",StacktraceKey:  "stacktrace",LineEnding:     zapcore.DefaultLineEnding,EncodeLevel:    zapcore.LowercaseLevelEncoder,EncodeTime:     customTimeEncoder, // 使用自定义时间编码器
        EncodeDuration: zapcore.SecondsDurationEncoder,EncodeCaller:   zapcore.ShortCallerEncoder,}// 配置lumberjack日志轮转logWriter := &lumberjack.Logger{Filename:   "./logs/app.log", // 日志文件路径MaxSize:    10,               // 单个文件最大尺寸(MB)MaxBackups: 3,                // 最多保留3个备份MaxAge:     365,              // 文件最多保存1天Compress:   true,             // 是否压缩/归档旧文件
    }// 创建zap核心配置core := zapcore.NewCore(zapcore.NewJSONEncoder(encoderConfig),zapcore.AddSync(logWriter),zap.InfoLevel,)// 创建并返回 zap 日志记录器return zap.New(core), nil
}// customTimeEncoder 自定义时间编码器,将时间戳转换为可读的日期时间字符串
func customTimeEncoder(t time.Time, enc zapcore.PrimitiveArrayEncoder) {//enc.AppendString(t.Format("2006-01-02T15:04:05.000Z07:00"))//"2024-12-20T15:18:15.546+08:00"enc.AppendString(t.Format("2006-01-02 15:04:05.000"))
}

组织结构

添加 zap  包

go get go.uber.org/zap

 添加 lumberjack 包作为依赖

go get gopkg.in/natefinch/lumberjack.v2

 go.mod

 运行后效果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/855885.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Goby自定义编写EXP入门篇:编写模板基础使用讲解

众所周知,Goby可以利用便捷的Json图形化编写PoC/EXP,但由于Goby的PoC/EXP基于Go代码,所以很多新手同学可能不太理解其中的变量和代码逻辑,为此,我们将开展从入门到精通的系列教程,为大家详细讲解如何使用Goby的JSON图形化界面进行漏洞编写。 入门篇:Goby Poc模板架构讲解…

SOLIDWORKS快捷键命令大全

SOLIDWORKS是一款广泛应用于工程设计、产品开发及机械制造领域的三维计算机辅助设计(CAD)软件。它以其直观的用户界面、强大的设计功能,成为了深受专业设计师喜爱的设计工具。想要在SOLIDWORKS中以更高的效率绘图,掌握一些快捷键,会让你的设计工作更加得心应手! 我们一起…

让AI碰撞!“天翼云息壤杯”高校AI大赛江苏赛区交流会热力开场!

由中国电信集团有限公司主办,天翼云科技有限公司承办的“天翼云息壤杯”高校AI大赛正在火热进行中。为了提高江苏赛区学生的参赛热情,增强学生的创作能力,江苏电信、天翼云华东中心于12月6日在南京联合举办了主题为“共筑教育新生态,息壤智汇新征程”的AI大赛交流分享会。由…

Parquet存储概述及读写时效对比

1. Parquet简介 Parquet是一种开放的列式存储格式,旨在提高大数据处理和分析的效率。 Parquet由Twitter和Cloudera合作开发,并于2015年5月从Apache的孵化器项目毕业,成为Apache的顶级项目。 Parquet旨在高效存储和处理大规模数据集,广泛应用于Hadoop、Spark等大数据生态系统…

“息 壤” 升 级 !

12月3日,以“AI赋能 共筑数字新生态”为主题的2024数字科技生态大会在广州召开。主论坛上,中国电信集团有限公司总经理助理,天翼云科技有限公司董事长、总经理胡志强对“息壤”一体化智算平台的最新升级和应用进行了介绍。通过在算网调度、智算服务、智算生态三个方面的大规…

AI智能分析视频分析网关关于监控摄像头数据量对云存储服务影响的探讨

在数字化安防监控领域,监控摄像头数据量的激增对云存储服务带来了前所未有的挑战与机遇。随着技术的不断进步和监控需求的日益增长,监控摄像头所产生的数据量正以前所未有的速度增长,这对云存储服务的性能、容量及可靠性提出了更高要求。本文将深入探讨监控摄像头数据量对云…

Slort pg walkthrough Intermediate window

nmap ┌──(root㉿kali)-[~] └─# nmap -p- -A -sS 192.168.226.53 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-20 04:30 UTC Stats: 0:01:10 elapsed; 0 hosts completed (1 up), 1 undergoing Service Scan Service scan Timing: About 40.00% done; ETC: 04:…

终身免费下载!小学初中高中电子版教科书下载器

软件介绍 这是一款可以终身免费下载小学初中高中电子版教科书下载器,让学生和家长可以轻松下载和使用。无论是备课、自习还是复习,这些电子版教科书都能为您提供帮助。 软件支持免费下载小学到高中的电子版教科书,书籍版本囊括统编版、人教版、北京版、北师大版、冀教版、苏…

面向教学科研智能感知系统应用开发实验室

车辆感知系统在智能驾驶中扮演着至关重要的角色,它如同车辆的“眼睛”和“耳朵”,负责实时监测和解读周围环境信息。该系统通过集成摄像头、雷达、激光雷达等多种传感器,能够准确识别道路状况、行人和其他车辆,为智能驾驶提供可靠的数据支持。经纬恒润推出面向教学及科研应…

Windows Server 2019 Datacenter 激活码——亲测可用

目前网络上流行的 Windows Server 2019 KMS 激活可以很方便且快速完成激活,而且不用担心安全问题。如果您是计算机运维人员,那么 Windows Server 2019 想必肯定有接触不少,那么现在就来一起看看如何激活该系统吧。 Windows Server 2019 有三个版本,在安装的时候我们可以采用…

swagger 导出swagger.json在线预览接口

导出swagger.jsonhttp://<your-host>:<your-port>/v2/api-docs http://<your-host>:<your-port>/v3/api-docs在线预览 将swagger.json数据放入左侧,右侧在线预览:https://editor.swagger.io/ 作者:陈彦斌 出处:https://www.cnblogs.com/chenyanbin…

密码学-RSA的学习

密码学-RSA的学习 前文 1.历史1977年,三位数学家RonRivest、Adi Shamir 和 Leonard Adleman 设计了一种算法,可以实现非对称加密。这种算法用他们三个人的名字命名,叫做RSA算法 2.加密与解密mod就是进行取模运算,通俗来说就是求余数 这个d... 对d不是很解了3.密钥的生成通过…