热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

go语言之日志,按文件大小日期轮询rotatelogs

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

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

**为go的log 增加轮询的功能**
使日志自动 保存,清理 实现轮询的机制!使你的系统日志不会再涨大 导致资源匮乏 崩溃 ·
包地址: https://github.com/gggwvg/logrotate
具体参数信息如程序所示!

package main
import (
"time"
//“log” 原生日志
"github.com/gggwvg/logrotate"
"github.com/sirupsen/logrus" //标准库日志
)
func main() {
opts := []logrotate.Option{
logrotate.File("/var/log/agent-mqtt-cli.log"),//创建日志目录
}
// opts = append(opts, logrotate.RotatePeriod(logrotate.PeriodDaily))//按天轮询
opts = append(opts, logrotate.MaxArchives(2))//最大保存两个日志文件
opts = append(opts, logrotate.RotateSize("5m"))//文件满5M就切割轮询
logger, err := logrotate.NewLogger(opts...)//构造函数,创建实例
if err != nil {
panic(err)
}
//log.SetOutput(logger) 原生的log也是可以使用的
logrus.SetOutput(logger) //将日志输出到rotatelogs
logrus.Println("rotate by daily and file size 100m")
//测试方法
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(10 * time.Second)
logger.Close()
}


推荐阅读
author-avatar
mobiledu2502855037
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有