golang实现分割日志

1.引用包

logrus包不能分割日志,所以必须配合file-rotatelogs包实现分割日志功能

	rotatelogs "github.com/lestrrat-go/file-rotatelogs"
	log "github.com/sirupsen/logrus"
2.构建日志配置

注意
path后面的时间格式最好和WithRotationTime设置的时间对应,
WRT设置为分钟时,path后面也设置到分钟,设置到分钟时,分钟的M必须大写,小写的话文件的时间后缀不会更新。
WRT设置为24小时,path后面也只设置到%d,d大写时会按照配置的时间创建文件夹,d小写时只会创建文件,不会创建文件夹,这个根据自身业务情况而定。

	writer, _ := rotatelogs.New(
		logFile+".%Y%m%d",                          //每天
		rotatelogs.WithLinkName(logFile),           //生成软链,指向最新日志文件
		rotatelogs.WithRotationTime(24*time.Hour),  //最小为1分钟轮询。默认60s  低于1分钟就按1分钟来
		rotatelogs.WithRotationCount(3),            //设置3份 大于3份 或到了清理时间 开始清理
		rotatelogs.WithRotationSize(100*1024*1024), //设置100MB大小,当大于这个容量时,创建新的日志文件

		// logFile+".%Y%m%d%H%M",                      //每分钟
		// rotatelogs.WithLinkName(logFile),           //生成软链,指向最新日志文件
		// rotatelogs.WithRotationTime(time.Minute),   //最小为1分钟轮询。默认60s  低于1分钟就按1分钟来
		// rotatelogs.WithRotationCount(3),            //设置3份 大于3份 或到了清理时间 开始清理
		// rotatelogs.WithRotationSize(100*1024*1024), //设置100MB大小,当大于这个容量时,创建新的日志文件
	)

	log.SetFormatter(&log.TextFormatter{FullTimestamp: true})
	log.SetLevel(minLevel)
	log.SetOutput(writer)

初始化完成后:
1.满足轮询时间时,会轮询一次,如果文件名称后缀的时间和之前的不一样,会生成新的日志文件,如果一样不会生成
2.当前日志容量大于配置的容量时,会生成新的日志文件,如果时间一样,在时间后缀后面会自动加上一个数字后缀,以此区分同一时间的不同日志文件,如果时间不一样,则生成新的时间后缀文件
3.在新生成日志文件时,如果超过配置的文件数量,则会自动删除最早的日志文件,以此类推
我这里配置的是大于3份日志时执行清除,所以日志文件最多只会存在三份,没有时间后缀的文件算作是当前的日志文件,里面的内容只会和最新的日志文件一样,当新的日志文件被创建时,没有时间后缀的文件会自动清除内容
ps:当代码里面执行日志记录时,才会执行以上的步骤,所以不必担心会一直生成无用的日志文件
在这里插入图片描述
日志级别:

日志级别:"panic", "fatal", "error", "warn", "info", "debug", "trace"
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(Golang)是一种开源的编程语言,它具有简洁、高效和并发性强的特点。在Go语言中,函数是一等公民,可以像其他类型的值一样进行传递和操作。 下面是介绍Golang实现函数的几个关键点: 1. 函数定义:使用关键字`func`来定义函数,语法如下: ``` func 函数名(参数列表) 返回值列表 { // 函数体 } ``` 例如,定义一个计算两个整数之和的函数: ``` func add(a, b int) int { return a + b } ``` 2. 函数参数:函数可以接受零个或多个参数,参数之间用逗号分隔。参数可以指定类型,例如`a, b int`表示两个整数类型的参数。如果多个参数的类型相同,可以只在最后一个参数后面指定类型。 例如,定义一个计算两个整数之差的函数: ``` func subtract(a, b int) int { return a - b } ``` 3. 函数返回值:函数可以返回一个或多个值。返回值列表放在函数名后面的括号中,并指定返回值的类型。如果函数没有返回值,可以省略返回值列表。 例如,定义一个计算两个整数之积和商的函数: ``` func multiplyAndDivide(a, b int) (int, float64) { return a * b, float64(a) / float64(b) } ``` 4. 匿名函数:在Go语言中,可以使用匿名函数,即没有函数名的函数。匿名函数可以直接赋值给变量,也可以作为参数传递给其他函数。 例如,定义一个匿名函数并将其赋值给变量: ``` add := func(a, b int) int { return a + b } ``` 5. 函数作为参数和返回值:在Go语言中,函数可以作为参数传递给其他函数,也可以作为函数的返回值。 例如,定义一个接受函数作为参数的函数: ``` func operate(a, b int, operation func(int, int) int) int { return operation(a, b) } ``` 以上是Golang实现函数的基本介绍。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值