Go日志系统

8 篇文章 2 订阅

Go日志系统

logrus作为go开发的日志系统;

建议采用 log.WithFields 方法以json形式生成日志文件,这样方便ELK日志系统抓取和分析日志。

package seedlog

import (
	"encoding/json"
	log "github.com/sirupsen/logrus"
)

const SEED_LOG_VERSION  = "1.0.0.0"

type SeedLog struct {

	//FileName  string  `json:"FileName"`
	FilePath   string `json:"FilePath"`
	//JsonFormat bool `json:"JsonFormat"`
	LogLevel   log.Level `json:"LogLevel"`
	mLog       *log.Logger
}

func (base* SeedLog) GetVersion() string {

	data, _ := json.Marshal(struct {
		VersionType  string
		VersionValue string
	}{
		VersionType:"SEED_LOG_VERSION",
		VersionValue:SEED_LOG_VERSION,
	})

	return string(data)
}

/*	
	日志使用方式
	log.WithFields(log.Fields{
		"animal": "walrus",
		"size":   10,
	}).Info("A group of walrus emerges from the ocean")
*/
package seedlog

import (
	rotelog "github.com/lestrrat-go/file-rotatelogs"
	log "github.com/sirupsen/logrus"
	"os"
	"time"
)

func (base* SeedLog) Init() error{
	base.mLog = log.New()

	if base.JsonFormat {
		base.mLog.SetFormatter(&log.JSONFormatter{})
	} else {
		base.mLog.SetFormatter(&log.TextFormatter{})
	}

	if len(base.FilePath) == 0 {
		base.mLog.SetOutput(os.Stdout)
	} else {
		writer, _ := rotelog.New(
			base.FilePath+".%Y%m%d%H%M",//日志命名方式
			rotelog.WithLinkName(base.FilePath),//保存路径
			rotelog.WithMaxAge(time.Duration(7*24)*time.Hour),//文件最大保存时间
			rotelog.WithRotationTime(time.Duration(24)*time.Hour), //每隔24h产生新的日志文件
			rotelog.WithRotationCount(4), // 日志保留数量
		)
		log.SetOutput(writer)
	}
	//日志级别数据
	if base.LogLevel < 0 || base.LogLevel > 6 {
		base.mLog.SetLevel(log.DebugLevel)

	} else {
		log.SetLevel(base.LogLevel)
	}

	return nil
}

func (base* SeedLog) GetLogHandle() *log.Logger {

	if base.mLog == nil {
		base.mLog = log.New()
		base.Init()
	}
	return base.mLog
}

日志类调用方式:

package main
import "seedlog"
func main() {
	var logs seedlog
    logs.FilePath="./log/seed_center"
    logs.logInit()
    logs.GetLogHandle().WithFields(log.Fields{}).Info("server will stop wait 5s...")
    return
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值