首页 > 其他分享 >file-rotatelogs包实现日志文件的轮转切割

file-rotatelogs包实现日志文件的轮转切割

时间:2023-04-16 19:44:59浏览次数:35  
标签:log rotatelogs logrus file time go 日志

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)
}
————————————————
版权声明:本文为CSDN博主「在线笔记-test01」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jkwanga/article/details/107186653

标签:log,rotatelogs,logrus,file,time,go,日志
From: https://www.cnblogs.com/cheyunhua/p/17323889.html

相关文章

  • MySQL的日志学习总结
    1、Mysql的安装这里使用tar包的方式 https://www.cnblogs.com/hanshuixin/articles/16887899.html初始的默认密码:tail-200falert.loglocalhost@root:后面的内容,就是本机root用户的初始密码,需要记录下来*<!ckp29Ne=& 2、错误日志错误日志是MySQL......
  • mac 环境下 启动postgrep 报错 "/tmp/.s.PGSQL.5432" failed: No such file or direc
    报错截图:解决方案:使用重新启动,postgrep服务:brewservicesrestartpostgresql......
  • burp日志和其他
    1、Logger日志模块Logger显示Burp工具和目标应用程序之间发送的所有HTTP流量的历史记录。这包括由扩展生成的请求。也就是说包括intruder和repeater等。删除target中的记录并不会影响Logger中的内容,反之也不会设置显示的字段:2、导出burp中有三种导出方式(1)Saveselectedit......
  • Dockerfile 构建镜像
    Dockerfile构建镜像什么是DockerfileDocker通过读取Dockerfile中的指令来构建镜像,类似C语言开发时使用Make通过Makefile构建项目其中包含Docker控制指令,这些指令遵循将应用程序组装成容器映像所需的特定格式,官方标准https://docs.docker.com/engine/reference/b......
  • dockerfile的使用,使用dockerfile部署springboot项目
    文章目录一、dockerfile概述1、dockerfile基础2、Docker执行Dockerfile的大致流程3、镜像、容器、dockerfile的关系二、dockerfile常用保留字1、FROM2、MAINTAINER与LABEL3、RUN4、EXPOSE5、WORKDIR6、USER7、ENV8、ADD9、COPY10、VOLUME11、CMD12、ENTRYPOINT三、使用dockerfile构......
  • MySQL MHA信息的收集【Filebeat+logstash+MySQL】
    一.项目背景随着集团MHA集群的日渐增长,MHA管理平台话越来越迫切。而MHA平台的建设第一步就是将这些成百上千套的MHA集群信息收集起来,便于查询和管理。MHA主要信息如下:(1)基础配置信息;(2)运行状态信息;(3)启动及FailOver的log信息。集团目前数据库的管理平台是在Archery的基础上打......
  • 面试官的灵魂一击: MySQL 事务日志是什么?
    SQL(StructuredQueryLanguage)和NoSQL(NotOnlySQL)是两种不同类型的数据库系统。SQL数据库系统采用了关系模型来存储数据,通过使用SQL语言进行数据管理和查询。SQL数据库系统适用于大规模、复杂的数据和事务处理,并且具有数据一致性和完整性的特点。常见的SQL数据库系统包括MySQL、Or......
  • 第5章 高效的多线程日志
    日志库介绍:一个日志库大体可分为前端(frontend)和后端(backend)两部分。前端是供应用程序使用的接口(API),并生成日志消息(logmessage);后端则负责把日志消息写到目的地(destination)。在多线程程序中,前端和后端都与单线程程序无甚区别,无非是每个线程有自己的前端,整个程序共用一个后端。但难点......
  • 服务器日志—wp—青少年CTF
    使用WireShark打开日志文件log.pcpng获取恶意用户下载的文件方法一:通过对FTP-DATA对象导出,可知下载了名为flag的文件,通过save可获取文件方法二:通过过滤FTP发现恶意用户使用了LIST、RETR等指令,其中RETR指令用于让服务器克隆一份指定的文件,由此推出下载了flag......
  • docker:Dockerfile、docker私有仓库、dockercompose介绍、dockercompose部署flask+redi
    目录一、Dockerfile1.1常用和不常用命令1.2dockerfile构建一个djagno项目二、docker私有仓库2.1镜像传到官方仓库2.2镜像分层2.3私有仓库搭建三、dockercompose介绍四、dockercompose部署flask+redis项目4.1新建flask项目app.py4.2编写Dockerfile--》用于构建flask项目的......