qmlog.go 1.2 KB
Newer Older
Mr.奇淼('s avatar
Mr.奇淼( 已提交
1 2 3 4 5
package qmlog

// 日志初始化包  调用qmlog.QMLog.Info 记录日志 24小时切割 日志保存7天 可自行设置
import (
	"fmt"
Mr.奇淼('s avatar
Mr.奇淼( 已提交
6
	"gin-vue-admin/tools"
Mr.奇淼('s avatar
Mr.奇淼( 已提交
7 8 9 10 11 12 13 14
	rotatelogs "github.com/lestrrat/go-file-rotatelogs"
	"github.com/rifflock/lfshook"
	"github.com/sirupsen/logrus"
	"os"
	"time"
)

var QMLog = logrus.New()
Mr.奇淼('s avatar
Mr.奇淼( 已提交
15

Mr.奇淼('s avatar
Mr.奇淼( 已提交
16
//禁止logrus的输出
Mr.奇淼('s avatar
Mr.奇淼( 已提交
17
func InitLog() *logrus.Logger {
Mr.奇淼('s avatar
Mr.奇淼( 已提交
18 19 20 21 22 23
	src, err := os.OpenFile(os.DevNull, os.O_APPEND|os.O_WRONLY, os.ModeAppend)
	if err != nil {
		fmt.Println("err", err)
	}
	QMLog.Out = src
	QMLog.SetLevel(logrus.DebugLevel)
G
Grant Yin 已提交
24 25 26
	if ok, _ := tools.PathExists("./log"); !ok {
		// Directory not exist
		fmt.Println("Create log.")
27
		_ = os.Mkdir("log", os.ModePerm)
G
Grant Yin 已提交
28
	}
29
	apiLogPath := "./log/api.log"
Mr.奇淼('s avatar
Mr.奇淼( 已提交
30 31 32 33 34 35 36 37 38 39 40 41
	logWriter, err := rotatelogs.New(
		apiLogPath+".%Y-%m-%d-%H-%M.log",
		rotatelogs.WithLinkName(apiLogPath),       // 生成软链,指向最新日志文件
		rotatelogs.WithMaxAge(7*24*time.Hour),     // 文件最大保存时间
		rotatelogs.WithRotationTime(24*time.Hour), // 日志切割时间间隔
	)
	writeMap := lfshook.WriterMap{
		logrus.InfoLevel:  logWriter,
		logrus.FatalLevel: logWriter,
	}
	lfHook := lfshook.NewHook(writeMap, &logrus.JSONFormatter{})
	QMLog.AddHook(lfHook)
42
	return QMLog
Mr.奇淼('s avatar
Mr.奇淼( 已提交
43
}