1.4. logrus 日志

未匹配的标注

引言

作为 github 上 golang star 最多的库,logrus值得练习。

项目地址

项目地址: github.com/sirupsen/logrus [star:21.4k]

使用场景

  • 日志打印、格式化日志

安装

go get github.com/sirupsen/logrus

常用方法

  • Info 打印 info 级别的日志
  • SetFormatter 设置日志格式
  • SetLevel 设置打印的级别,此级别以上显示
  • SetReportCaller 设置是否将调用方法作为字段包含在打印的日志内。

例子

package main

import "github.com/sirupsen/logrus"

func main() {
    log := logrus.New()
    log.Info("------TextFormatter--------") // 默认格式
    log.SetFormatter(&logrus.TextFormatter{
        TimestampFormat: "2006-01-02 15:04:05", // 定义日期时间格式
        FullTimestamp:   true,
        DisableColors:   true,
    })
    log.Info("oscome info log")
    log.Debug("oscome debug log")

    log.WithFields(logrus.Fields{
        "name": "test",
    }).Infof("to do %v", "log")

    log.Info("------JSONFormatter--------")

    formatter := &logrus.JSONFormatter{
        TimestampFormat: "2006-01-02 15:04:05", // 定义日期时间格式
        DataKey:         "test",                // key
        FieldMap: logrus.FieldMap{
            logrus.FieldKeyTime:  "timestamp",
            logrus.FieldKeyLevel: "level",
            logrus.FieldKeyMsg:   "message",
            logrus.FieldKeyFunc:  "caller",
        },
    }
    log.SetFormatter(formatter)
    log.SetReportCaller(true)      // 打印 log 产生的位置
    log.SetLevel(logrus.InfoLevel) // debug
    logrus.Info("oscome info log")
    log.Debug("oscome debug log")

    log.WithFields(logrus.Fields{
        "name": "test",
    }).Infof("to do %v", "log")
}

实例代码

github.com/oscome/godaily/tree/mai...

tips

  1. 建议全局统一格式,如果需要收集建议设置为 json 格式,方便收集到 ES 等日志系统
  2. 可以配合 file-rotatelogs 或者 shell 去分割

关注和赞赏都是对笔者最大的支持
关注和赞赏都是对笔者最大的支持

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~