golang日志框架--logrus学习笔记

golang标准库的日志框架非常简单,仅仅提供了print,panic和fatal三个函数,对于更精细的日志级别、日志文件分割以及日志分发等方面并没有提供支持。所以催生了很多第三方的日志库,而logrus就是其中的一款第三方日志库,它的功能强大,性能高效,而且具有高度灵活性,提供了自定义插件的功能。

1.logrus的特性

  • 完全兼容golang标准库日志模块:logrus拥有六种日志级别:debug、info、warn、error、fatal和panic,这是golang标准库日志模块的API的超集。如果项目使用标准库日志模块,完全可以以最低的代价迁移到logrus上。

  • 可扩展的Hook机制:允许使用者通过hook的方式将日志分发到任意地方,如本地文件系统、标准输出、logstash、elasticsearch或者mq等,或者通过hook定义日志内容和格式等。

  • 可选的日志输出格式:logrus内置了两种日志格式,JSONFormatterTextFormatter,如果这两个格式不满足需求,可以自己动手实现接口Formatter,来定义自己的日志格式。

  • Field机制:logrus鼓励通过Field机制进行精细化的、结构化的日志记录,而不是通过冗长的消息来记录日志。

  • logrus是一个可插拔的、结构化的日志框架。

2.logrus的使用

package main

import (
log "github.com/sirupsen/logrus" //这个日志依赖库,需要使用
//govendor fetch github.com/sirupsen/logrus 下载到vendor目录。
) func main() {
log.WithFields(log.Fields{
"info": "这是golang日志框架--logrus",
}).Info("描述信息为golang日志框架logrus的学习")
}

控制台打印输出为:

logrus与golang标准库日志模块完全兼容,因此可以使用log "github.com/sirupsen/logrus"替换所有日志导入。 logrus还可以通过简单的配置,来定义输出、格式或者日志级别等。

3.设置日志输出格式,日志级别等信息

import (
log "github.com/sirupsen/logrus"
"os"
) func initLog() {
log.SetFormatter(&log.JSONFormatter{})//设置日志的输出格式为json格式,还可以设置为text格式
log.SetOutput(os.Stdout)//设置日志的输出为标准输出
log.SetLevel(log.InfoLevel)//设置日志的显示级别,这一级别以及更高级别的日志信息将会输出
} func main() {
//以package级别方式使用日志
initLog()
log.WithFields(log.Fields{
"info": "这是golang日志框架--logrus",
}).Info("描述信息为golang日志框架logrus的学习") log.WithFields(log.Fields{
"omg": true,
"number": 122,
"country": "china",
}).Warn("hello this is warn level") //警告级别 log.WithFields(log.Fields{
"hello": "jason",
}).Fatal("the ice breaks!")//最高级别,致命信息 }

4.使用日志实例的方式使用日志

package main

import (
"github.com/sirupsen/logrus"
"os"
) var log=logrus.New() func main() {
//用日志实例的方式使用日志
log.Out=os.Stdout //日志标准输出
file,err:=os.OpenFile("golang.log",os.O_CREATE|os.O_WRONLY,1)
if err==nil {
log.Out=file
}else {
log.Info("failed to log to file")
}
log.WithFields(logrus.Fields{
"filename":"123.txt",
}).Info("将日志信息输出到文件中") }

以上就是logrus日志框架的简单了解和使用

golang日志框架--logrus学习笔记的更多相关文章

  1. # go微服务框架kratos学习笔记六(kratos 服务发现 discovery)

    目录 go微服务框架kratos学习笔记六(kratos 服务发现 discovery) http api register 服务注册 fetch 获取实例 fetchs 批量获取实例 polls 批 ...

  2. go微服务框架kratos学习笔记四(kratos warden-quickstart warden-direct方式client调用)

    目录 go微服务框架kratos学习笔记四(kratos warden-quickstart warden-direct方式client调用) warden direct demo-server gr ...

  3. Mina框架的学习笔记——Android客户端的实现

    Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络 ...

  4. go微服务框架kratos学习笔记七(kratos warden 负载均衡 balancer)

    目录 go微服务框架kratos学习笔记七(kratos warden 负载均衡 balancer) demo demo server demo client 池 dao service p2c ro ...

  5. go微服务框架kratos学习笔记八 (kratos的依赖注入)

    目录 go微服务框架kratos学习笔记八(kratos的依赖注入) 什么是依赖注入 google wire kratos中的wire Providers injector(注入器) Binding ...

  6. jfinal框架教程-学习笔记

    jfinal框架教程-学习笔记 JFinal  是基于 Java  语言的极速  WEB  + ORM  开发框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restfu ...

  7. Java框架spring 学习笔记(十八):事务管理(xml配置文件管理)

    在Java框架spring 学习笔记(十八):事务操作中,有一个问题: package cn.service; import cn.dao.OrderDao; public class OrderSe ...

  8. go微服务框架kratos学习笔记五(kratos 配置中心 paladin config sdk [断剑重铸之日,骑士归来之时])

    目录 go微服务框架kratos学习笔记五(kratos 配置中心 paladin config sdk [断剑重铸之日,骑士归来之时]) 静态配置 flag注入 在线热加载配置 远程配置中心 go微 ...

  9. go微服务框架kratos学习笔记九(kratos 全链路追踪 zipkin)

    目录 go微服务框架kratos学习笔记九(kratos 全链路追踪 zipkin) zipkin使用demo 数据持久化 go微服务框架kratos学习笔记九(kratos 全链路追踪 zipkin ...

随机推荐

  1. 转:VMware 15 安装 MAC OS 10.13 原版(详细图文教程)

    -----------------转载------------------------ 原文:https://blog.csdn.net/qq_40147863/article/details/847 ...

  2. 在Excel中,已知身份证号码,如何批量计算其实际年龄?

    昨天,上司问我:..,你会在Excel中计算年龄吗?当时,一下促住了.说真的,还真不会.今天研究了一下,写下来,方便日后查看. 首先,得有一张已知姓名和相应身份证号的原表吧. 在这张表上再加上三列:出 ...

  3. [占位符   ]

    在做项目的时候,数据库中的数据会存在空值;这样,我们需要在前台给它加以判断, 如果我们不加以判断也是可行的,我们需要添加一个空白占位符  空白占位符 是个不错的选择,这样我们的页面显示数据的时候就不会 ...

  4. uboot下如何读写rtc pcf2127的寄存器?

    一. pcf2127简介 pcf2127是实时时钟计数器模块,支持两种接口,i2c和spi,笔者以i2c为例 二. pcf2127的读写操作时序 2.1 写操作 根据i2c的规范https://www ...

  5. 淘宝TAE平台定时任务包的部署步骤

    淘宝TAE平台定时任务包的部署: 第一步:首先把自己的任务打包成一个jar包.使用maven打包的命令为:mvn clean install 第二步:把任务jar包依赖的jar包全部导出来.使用mav ...

  6. lab 颜色模式的生理原因 黄色, 洋红色 刺眼。 绿色,蓝色,不刺眼。

    hsb 颜色模式理解了. lab 颜色模式,都说是生理原因.没说是啥生理原因. 猜测:黄色, 洋红色 刺眼.   绿色,蓝色,不刺眼. https://blog.csdn.net/self_mind/ ...

  7. Python——PYQT:控件基本使用

    QtGui.QComboBox控件常用函数: .addItem(string) #添加字符串项到Item .addItems(list) #添加列表或元组元素到Item .clear() #清除所有I ...

  8. iOS类型的转换

    1.NSData和NSString的转换: - (void)viewDidLoad { [super viewDidLoad]; // 字符串 NSString *str = "; NSLo ...

  9. <li>元素的排序

    要点: getElementsByTagName("li")返回的是HTMLCollection对象,这个对象不同于Array对象,不能使用sort()方法进行排序~ 下面方法的要 ...

  10. String与toString

    String与toString能将对象转为字符串: 类型 行为描述 Array 将 Array 的每个元素转换为字符串,并将它们依次连接起来,两个元素之间用英文逗号作为分隔符进行拼接. Boolean ...