0
点赞
收藏
分享

微信扫一扫

golang之logrus日志的封装

当前封装基于工程项目,目录结构为下图

golang之logrus日志的封装_日志输出

1.log日志属于工具类包所以我们在utils目录下创建相关目录以及文件

package logs

import "github.com/sirupsen/logrus"

//定义各级别日志的函数
func Debug(fields map[string]interface{}, msg string){
    /*
    	接收参数解释:查看logrus 用法得知withfields 接收是个map类型
        但是由于我们日志类型可一有 int 、string 所以map key的类型为string
        value 类型为interface,Debug() 则为描述信息定义为 string类型即可
    */
    logrus.WithFields(fields).Debug(msg)
}

func Info(fields map[string]interface{}, msg string){
    /*
    	接收参数解释:查看logrus 用法得知withfields 接收是个map类型
        但是由于我们日志类型可一有 int 、string 所以map key的类型为string
        value 类型为interface,Debug() 则为描述信息定义为 string类型即可
    */
    logrus.WithFields(fields).Info(msg)
}

2.配置日志格式以及级别等事项,编辑config目录文件

// 由于golang的特性在导入包时会自动加载init函数所以这里创还能init函数作为配置

package config

import (
	"github.com/sirupsen/logrus"
	"github.com/spf13/viper"
	"go_kuan/utils/logs"
)

// 时间格式化可能会很多地方用到这里事先定义常量
const (
    TimeFormat string = "2006-01-02 15:04:05"
)

// 代码规范一个函数不宜编写过多代码另起一个函数编写日志配置
func initLogConfig(loglevel string){
	//配置程序日志输出级别
    if loglevel == "debug"{
        logrus.SetLevel(logrus.DebugLevel)
    }else {
        logrus.SetLevel(logrus.InfoLevel)
    }
    // 设置日志输出的文件名以及行号
    logrus.SetReportCaller(true)
    // 输出格式改为jsons 时间并格式化
    logrus.SetFormatter(&logrus.JSONFormatter{TimeStampFormat: TimeFormat})
}

// 这里init 不需要首字母大写 golang 的特性在导入包时会自动加载
func init(){
	// 设置一个默认值如果系统没有这个日志级别
    viper.SetDefault("LOG_LEVEL","debug")
    viper.AutomaticEnv()
    logLevel := viper.GetSting("LOG_LEVEL")
    // 加载日志输出格式
    intLogConfig(logLevel)
}

举报

相关推荐

0 条评论