自己动手封装让Logrus支持本地与ELK日志

程序中记录日志一般有两个目的:Troubleshooting和显示程序运行状态。好的日志记录方式可以提供我们足够多定位问题的依据。日志记录大家都会认为简单,但如何通过日志可以高效定位问题并不是简单的事情。

在Go语言中,日志库并不像Java一样有一个具有统治力的日志库。在做新项目技术选型的时候,难免会遇到日志库的选择问题。近期公司新项目我选择了logrus是我已知的Go语言日志库中在Github中stars数最多的日志库。

官网介绍:

Logrus is a structured logger for Go (golang), completely API compatible with the standard library logger.

FullCode:https://github.com/quan-xie/tuba/tree/master/log

log.go File

package log

import (
  "fmt"
  "math"
  "os"
  "time"

  "github.com/Sirupsen/logrus"
  "github.com/gin-gonic/gin"
)

var xlog = logrus.New()

type Config struct {
  Dir      string  //本地日志文件路径
  Logstash *Logstash // logstash 配置文件
}

// Init is Initial log config .
func Init(conf *Config) {
  if conf.Dir != "" {
    pathMap := PathMap{
      logrus.InfoLevel:  conf.Dir + "/info.log",
      logrus.ErrorLevel: conf.Dir + "/error.log",
    }
    xlog.Hooks.Add(NewLocalHook(    // 添加本地日志Hook
      pathMap,
      &logrus.JSONFormatter{},
    ))
  }
  logstash, err := NewLogstash(conf.Logstash)  // 添加ELK Hook
  if err == nil {
    xlog.Hooks.Add(logstash)
  }
  xlog.Error("NewLogstash error(%v)", err)
}

// Info send log info to logstash
func Info(format string, args ...interface{}) {
  xlog.SetLevel(logrus.InfoLevel)
  xlog.Infof(format, args)
}

// Error send log error to logstash
func Error(format string, args ...interface{}) {
  xlog.SetLevel(logrus.ErrorLevel)
  xlog.Errorf(format, args)
}

// Warn send log warn to logstash
func Warn(format string, args ...interface{}) {
  xlog.SetLevel(logrus.WarnLevel)
  xlog.Warnf(format, args)
}

// Debug send log debug to logstash
func Debug(format string, args ...interface{}) {
  xlog.SetLevel(logrus.DebugLevel)
  xlog.Debugf(format, args)
}

// Fatal send log fatal to logstash
func Fatal(format string, args ...interface{}) {
  xlog.SetLevel(logrus.FatalLevel)
  xlog.Fatalf(format, args)
}

 

打赏作者

您的支持将鼓励我们继续创作!

[微信] 扫描二维码打赏

[支付宝] 扫描二维码打赏

1 thought on “自己动手封装让Logrus支持本地与ELK日志”

  1. 感谢分享!已推荐到《开发者头条》:https://toutiao.io/posts/6b1ffq 欢迎点赞支持!
    使用开发者头条 App 搜索 4410 即可订阅《谢权blog》

Leave a Reply

Your email address will not be published. Required fields are marked *