go语言之日志,按日期轮询file-rotatelogs

“–————人与人之间还是直接点好——————”

1.go语言本身的日志系统是很强大的,例如:
 "log"
 "github.com/sirupsen/logrus"
 但,go语言本身并没有日志轮询机制,(就是将日志定期清理,保存,使之不会不停涨大)
 
 2.此处使介绍了一个 file-rotatelogs 包 "github.com/lestrrat-go/file-rotatelogs"
 ****它可以和标准的日志结合使用****
 具体参数,程序描述的够清晰了!
 利弊看程序解析!
package main

import (
 "log"
 "time"
 rotatelogs "github.com/lestrrat-go/file-rotatelogs"
 "github.com/sirupsen/logrus"
)

func main() {

 content, err := rotatelogs.New(
  "/var/log/cli.log"+"-%Y%m%d%H%M",
  rotatelogs.WithLinkName("/var/log/cli.log"), // 生成软链,指向最新日志文件
  //MaxAge and RotationCount cannot be both set  两者不能同时设置
  rotatelogs.WithMaxAge(6*time.Minute), //clear 最小分钟为单位
  //rotatelogs.WithRotationCount(5),        //number 默认7份 大于7份 或到了清理时间 开始清理
  rotatelogs.WithRotationTime(time.Minute), //rotate 最小为1分钟轮询。默认60s  低于1分钟就按1分钟来
 )
 
 if err != nil {
  log.Printf("failed to create rotatelogs: %s", err)
  return
 }
 
 logrus.SetOutput(content)
 
 f := func() {
  for i := 0; i < 100; i++ {
   logrus.WithFields(logrus.Fields{
   
    "animal": "walrus",
    
    "number": i,
    
   }).Info("A walrus appears")
   
   logrus.Error("xxxxxxxxxxxxxxx")
   logrus.Error("xxxxxxxxxxxxxxx2")
   logrus.Error("xxxxxxxxxxxxxxx3")
   
   time.Sleep(time.Second)
  }
  
 }
 
 for i := 0; i < 1000000; i++ {
 
  go f()
  time.Sleep(time.Second)
 }
 f()
 
 time.Sleep(121 * time.Second)
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言中,rotatelogs是一个用于分割日志的包,它和logrus包配合使用可以实现分割日志的功能。你可以通过设置轮询时间、文件数量和文件大小等参数来灵活地控制日志的分割方式。例如,你可以设置每天生成一个新的日志文件,保留最近的3个日志文件,并在日志文件大小达到100MB时创建新的日志文件。 使用rotatelogs包时,你需要先构建日志配置,包括设置日志文件的路径、轮询时间、文件数量和大小等。然后,通过调用rotatelogs.New方法创建一个日志写入器,并将其设置为logrus包的输出目标。最后,你可以设置日志的格式和输出级别。 初始化完成后,每当满足轮询时间、日志文件大小超过设定值或有新的日志记录时,rotatelogs会根据配置自动进行日志文件的分割和清理。如果生成的日志文件数量超过设定值,rotatelogs会自动删除最早的日志文件,确保日志文件数量不会超过设定的限制。 需要注意的是,rotatelogs只会在代码中执行日志记录时才会进行分割和清理操作,因此不必担心会一直生成无用的日志文件。同时,你可以根据自己的需求设置日志级别,包括"panic"、"fatal"、"error"、"warn"、"info"、"debug"和"trace"等级别。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [golang实现分割日志](https://blog.csdn.net/qq_42119514/article/details/121372416)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值