go日志库中的logrus
作者:zzxiaoma 发布时间:2023-07-21 13:48:02
标签:go,日志库,logrus
一、安装
go get github.com/sirupsen/logrus
二、使用
1、当做标准库使用
logrus实现了标准库log的方法,可以用标准库的方法用于logrus,例如
import (
log "github.com/sirupsen/logrus"
)
log.Println("标准log")
2、使用带级别日志
import (
log "github.com/sirupsen/logrus"
)
func main() {
log.Info("info")
}
具体有七个类别Trace、Debug、Info、Warning、Error、Fatal和Panic。这里需要注意Fatal和Panic类型的日志会中断程序的运行。
3、输出日志时可以附带参数
log.WithFields(log.Fields{
"flag": true,
"name": "zhangsan",
}).Fatal("fatal")
在运行中出现错误时,把当时的参数记录下来更容易分析,而不是把各个参数组织成句子拼接起来。
4、日志输出的格式
log.SetFormatter(&log.JSONFormatter{})
log.SetFormatter(&log.TextFormatter{
ForceColors: true,
FullTimestamp: true,
})
log.SetOutput(os.Stdout)
log.SetLevel(log.WarnLevel)
可以输出JSON,文本格式,对具体的格式还可以设置颜色、时间串等信息,可以设置输出位置,输出日志的级别。
5、输出到多个位置
如果同一份日志内容想存储到不同位置,可以创建不同的log实例,对每个实例进行不同设置
var log = logrus.New()
6、输出日志到文件
file, err := os.OpenFile("logs/cus.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err == nil {
log.Out = file
} else {
log.Info("Failed to log to file, using default stderr")
}
7、分割日志文件
如果每天的日志都放到一个文件中,会越来越大,按照时间进行分割会比较好。下面的内容放到初始化的时候执行。
这里面需要引入第三方库
"github.com/lestrrat-go/file-rotatelogs"
"github.com/rifflock/lfshook"
writer, err := rotatelogs.New(
"文件名"+".%Y%m%d%H%M", // 分割后的文件名称
rotatelogs.WithLinkName("文件名"), // 生成软链,指向最新日志文件
rotatelogs.WithMaxAge(time.Hour*24*365), // 设置最大保存时间
rotatelogs.WithRotationTime(time.Hour*24), // 设置日志切割时间间隔
)
if err != nil {
log.Errorf("config local file system logger error", err)
}
lfHook := lfshook.NewHook(lfshook.WriterMap{
logrus.DebugLevel: writer, // 为不同级别设置不同的输出目的
logrus.InfoLevel: writer,
logrus.WarnLevel: writer,
logrus.ErrorLevel: writer,
logrus.FatalLevel: writer,
logrus.PanicLevel: writer,
}, &logrus.TextFormatter{DisableColors: true})
//最后加入hook
log.AddHook(lfHook)
来源:https://blog.51cto.com/u_3764469/5604385


猜你喜欢
- 一. 开发前的准备1. 必须了解的知识 SDK:软件开发工具包,可以为开发者提供快速开发的工具沙箱环境:也就是测试环境支付宝支付金额的精度:
- 本文实例为大家分享了PyQt5实现暗黑风格的计时器的具体代码,供大家参考,具体内容如下主要是学习多线程知识,使用的是QTime(),但是似乎
- 一 导入 pymongofrom pymongo import MongoClient二 连接服务器 端口号 27017连接MongoDB连
- 在我们的日常生活工作中,经常会遇到需要上传日志的场景,比如多台机器运行同一个程序,并且需要记录每台机器程序产生的日志,根据相关关键词告警,或
- 代码如下:<form action="insert.asp" method="pos
- 昨天打包下载了一个服务器整站,拿到这个*.mdb的文件后,却不知道怎么用,百度了一下,才知道是一种木马打包的形式文件,不能用WINrar来解
- 所谓的列表推导式,就是指的轻量级循环创建列表。基本使用方式# 创建一个0-10的列表a = [x for x in range(11)]pr
- 无论何时,IE总是让页面制作者感到那么的黯然销魂,尤其是IE6,IE7次之,虽然IE8已经做了很大的改进,但由于XP用户的数量实在太大,而且
- 1.筛选出目标值所在行 单列筛选# df[列名].isin([目标值])对当前列中存在目标值的行会返回True,不存在的返回Fal
- toString()方法的定义和用法:toString()方法可以把Number对象转换成字符串,并返回此字符串。点击可查看更多
- VS2013的简单WInForm控件,通过WebRequest,WebResponse来访问,接收:private void btn_int
- 1、pyecharts介绍 Echarts是一款由百度公司开发的开源数据可视化JS库,pyecharts是一款使用python调用echar
- 在matplotlib下,一个Figure对象可以包含多个子图(Axes),可以使用subplot()快速绘制,其调用形式如下:subplo
- 在最开始的时候所有的斐波那契代码都是使用递归的方式来写的,递归有很多的缺点,执行效率低下,浪费资源,还有可能会造成栈溢出,而递归的程序的优点
- <title>无标题文档</title> <script language="javascript&
- pycharm cv2的package安装失败在 PyCharm 中安装 cv2 包失败的原因可能有很多具体的解决方案如下确保您已经安装了
- 一. ADO.NET的定义ADO.NET来源于COM组件库ADO(即ActiveX Data Objects),是微软公司新一代.NET数据
- 影响数据库性能的常见因素如下:(1)磁盘IO;(2)网卡流量;(3)服务器硬件;(4)SQL查询速度。下面介绍几个mysql 优化的工具,可
- 需求分析“员工刷脸考勤”系统,采用Python语言开发,可以通过摄像头添加员工面部信息,这里就涉及到两个具体的个问题,一个是应该以什么样的数
- 一、前言最近忙里偷闲,做了一个部署数据库及IIS网站站点的WPF应用程序工具。 二、内容此工具的目的是:根据.sql文件在本机上部