zoukankan      html  css  js  c++  java
  • golang日志框架--logrus学习笔记

    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日志框架的简单了解和使用

  • 相关阅读:
    IIS 6.0下安装SSL数字证书实现https访问
    使用SQL2005自带扩展函数对字符串进行MD5加密(转)
    Posix多线程编程学习笔记(三)—信号灯(1)--转自湖光倒影
    利用pthread_mutex对多进程上锁
    ObjectiveC中的锁
    Linux内存管理之mmap详解
    cocoa应用程序生命周期
    多线程编程互斥锁
    [New Book]Flex第一步 国内第一本关于Flex的书籍
    ASP.NET中实现二级或多级域名(修改UrlRewrite)
  • 原文地址:https://www.cnblogs.com/jasonboren/p/11395097.html
Copyright © 2011-2022 走看看