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

go 设置滚动日志

方案

通过 log/slog 实现结构化日志生成,这是go1.21中推出的新特性;通过 lumberjack 实现日志文件分割。

示例

package mainimport ("gopkg.in/natefinch/lumberjack.v2""log/slog""os""path/filepath"
)func main() {r := &lumberjack.Logger{Filename:   filepath.Base(os.Args[0]) + ".log",LocalTime:  true,MaxSize:    1,MaxAge:     3,MaxBackups: 5,Compress:   true,}logger := slog.New(slog.NewJSONHandler(r, nil))slog.SetDefault(logger)slog.Info("start app")

参数说明

lumberjack.Logger

type Logger struct {// Filename 是用来写入日志的文件。旋转的日志文件将被保留在同一目录中。// 如果 Filename 为空,它将使用 os.TempDir() 中的 <processname>-lumberjack.log 文件。Filename string `json:"filename" yaml:"filename"`// MaxSize 是日志文件在进行轮转之前的最大大小(以兆字节为单位)。默认为100兆字节。MaxSize int `json:"maxsize" yaml:"maxsize"`// MaxAge 是根据文件名中的时间戳编码来保留旧日志文件的最大天数。请注意,一天定义为24小时,可能由于夏令时、闰秒等原因与日历天数不完全对应。// 默认情况下,不根据年龄删除旧的日志文件。MaxAge int `json:"maxage" yaml:"maxage"`// MaxBackups 是要保留的旧日志文件的最大数量。默认情况下,保留所有旧的日志文件(尽管 MaxAge 可能仍会导致它们被删除)。MaxBackups int `json:"maxbackups" yaml:"maxbackups"`// LocalTime 确定备份文件中时间戳格式化所使用的时间是否为计算机的本地时间。默认情况下,使用 UTC 时间。LocalTime bool `json:"localtime" yaml:"localtime"`// Compress 确定是否使用 gzip 对轮转的日志文件进行压缩。默认情况下,不执行压缩。Compress bool `json:"compress" yaml:"compress"`// 包含过滤或未导出的字段
}

参考

lumberjack package - gopkg.in/natefinch/lumberjack.v2 - Go Packages

http://www.lryc.cn/news/311099.html

相关文章:

  • Rollup入门学习:前端开发的构建利器
  • 游戏寻路之A*算法(GUI演示)
  • 软件工程顶会——ICSE '24 论文清单、摘要
  • Vue点击复制到剪切板
  • 链路负载均衡之DNS透明代理
  • 2024大语言模型LLM基础|语义搜索Semantic_Search全解
  • vue中使用echarts实现人体动态图
  • 结构化思维助力Prompt创作:专业化技术讲解和实践案例
  • 【0272】postgres内核分配 MyBackendId 实现原理(MyBackendId、MyProc、shmInvalBuffer)(三)
  • AUKFUKF的MATLAB程序,含源码
  • STM32(13)串口
  • Element(Java后端入门篇)
  • qt5和gstreamer开发环境安装配置
  • 基于Python3的数据结构与算法 - 10 计数排序
  • 力扣206反转链表
  • 【python实战】--图片创作视频
  • 数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(代码部分)
  • AWS EKS(AWS云里面的K8S)
  • Azkaban 大数据 任务调度
  • 从预训练到通用智能(AGI)的观察和思考
  • 四种垃圾回收算法
  • stm32f103zet6笔记1-led工程
  • OpenDDS的Qos策略
  • string基本操作(C++)
  • 【网站项目】123网上书城系统
  • LeetCode148.排序链表
  • qt学习:网络调试助手客户端+服务端
  • C语言拾遗
  • 大唐杯学习笔记:Day4
  • docker基线安全修复和容器逃逸修复