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)

到此这篇关于go日志库中的logrus的文章就介绍到这了,更多相关go日志库logrus内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 深入浅析golang zap 日志库使用(含文件切割、分级别存储和全局使用等)

    日志处理经常有以下几个需求: 1.不同级别的日志输出到不同的日志文件中. 2.日志文件按照文件大小或日期进行切割存储,以避免单一日志文件过大. 3.日志使用简单方便,一次定义全局使用. 建议使用使用Uber-go的Zap Logger,大神李文周大博客已经说的非常明确了,请先参考李老师的博客: https://www.liwenzhou.com/posts/Go/zap/ 问题二和问题三需要补充描述: 一.日志按照级别分文件切割存储 1.1 首先实现两个判断日志等级的interface info

  • Go语言编程实现支持六种级别的日志库 

    目录 前言 初始需求 技术实现 类型定义 日志级别 写到文件 默认实现 前言 Golang标准日志库提供的日志输出方法有Print.Fatal.Panic等,没有常见的Debug.Info.Error等日志级别,用起来不太顺手.这篇文章就来手撸一个自己的日志库,可以记录不同级别的日志. 其实对于追求简单来说,Golang标准日志库的三个输出方法也够用了,理解起来也很容易: Print用于记录一个普通的程序日志,开发者想记点什么都可以. Fatal用于记录一个导致程序崩溃的日志,并会退出程序. P

  • go日志库logrus的安装及快速使用

    目录 安装简介 快速使用 支持的日志级别 日期 打印调用位置 添加字段 给字段值加引号 设置钩子 设置channel 输出日志 安装简介 Logrus是Go的结构化日志记录器,与标准的日志记录器库完全API兼容. go get安装的logrus库 go get github.com/sirupsen/logrus 快速使用 package main import ( log "github.com/sirupsen/logrus" ) func main() { log.SetLeve

  • Go语言中log日志库的介绍

    一.标准库log介绍 Go语言内置的log包实现了简单的日志服务. 1.使用Logger log包定义了Logger类型,该类型提供了一些格式化输出的方法. log包也提供了一个预定义的"标准"logger,可以通过调用函数Print系列(Print|Printf|Println).Fatal系列(Fatal|Fatalf|Fatalln).和Panic系列(Panic|Panicf|Panicln)来使用,比自行创建一个logger对象更容易使用. logger会打印每条日志信息的日

  • golang默认Logger日志库在项目中使用Zap日志库

    目录 在Go语言项目中使用Zap日志库介绍 默认的Go Logger日志库 实现Go Logger 设置Logger 使用Logger Logger的运行 Go Logger的优势和劣势 优势 劣势 Uber-go Zap日志库 为什么选择Uber-go zap 安装 配置Zap Logger Logger Sugared Logger 定制logger 将日志写入文件而不是终端 将JSON Encoder更改为普通的Log Encoder 更改时间编码并添加调用者详细信息 使用Lumberja

  • 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()

  • MySQL 线上日志库迁移实例

    说说最近的一个案例吧,线上阿里云RDS上的一个游戏日志库最近出现了一点问题,随着游戏人数的增加,在线日志库的数据量越来越大,最新的日志库都已经到50G大小了,在线变更的时间非常长. 之前之所以没有发现,是因为之前一直没有进行过日志库的变更,但是随着业务的深入,需要增加一些游戏属性,要对之前的日志库进行变更,这样一来,长时间的维护窗口让业务方和DBA都望而却步,日志优化迫在眉睫. 首先看日志库的情况: 1.日志库中数据量大于5000w的大表有5张: 2.这5张表开量前每个月的数据量大概在2000w

  • Python中logging日志库实例详解

    logging的简单使用 用作记录日志,默认分为六种日志级别(括号为级别对应的数值) NOTSET(0) DEBUG(10) INFO(20) WARNING(30) ERROR(40) CRITICAL(50) special 在自定义日志级别时注意不要和默认的日志级别数值相同 logging 执行时输出大于等于设置的日志级别的日志信息,如设置日志级别是 INFO,则 INFO.WARNING.ERROR.CRITICAL 级别的日志都会输出. |2logging常见对象 Logger:日志,

  • Python loguru日志库之高效输出控制台日志和日志记录

    1安装loguru loguru的PyPI地址为:https://pypi.org/project/loguru/ GitHub仓库地址为:https://github.com/Delgan/loguru 我们可以直接使用pip命令对其进行安装 pip install loguru 或者下载其源码,使用Python命令进行安装. |2loguru简单使用 from loguru import logger logger.info("中文loguru") logger.debug(&qu

  • Python logging日志库空间不足问题解决

    项目中使用的日志库是使用python官方库logging封装的,但是居然一直么有设置日志自动滚动,经常会受到告警说哪台机器磁盘空间又满,清理一下,于是研究一下,解决这个问题. 参考:https://docs.python.org/2/library/logging.handlers.html TimedRotatingFileHandler有三个参数很关键 when.interval.backupCount when指定滚动依据的单位,可选的有天.小时.分钟.秒等:interval指定间隔多少个

  • C# log4net日志库的用法小结

    目录 一.简述 二.下载log4net 三.添加log4net.dll引用 四.添加日志配置log.config 五.在AssemblyInfo.cs文件中添加log4net.dll相关参数 六.测试例子 6.1 测试代码 6.2 效果 七.附 7.1 更多日志配置 7.2 日志格式 7.3 日志配置 一.简述 记--log4net日志开源库的简单使用:控制日志文件大小,日志文件个数,滚动式覆盖,自由控制日志打印等级 例子打包: http://xiazai.jb51.net/202110/yua

随机推荐