81 lines
2.2 KiB
Go
81 lines
2.2 KiB
Go
package core
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"github.com/sirupsen/logrus"
|
|
"os"
|
|
"path"
|
|
"schisandra-cloud-album/global"
|
|
)
|
|
|
|
const (
|
|
red = 31
|
|
yellow = 33
|
|
blue = 34
|
|
gray = 37
|
|
)
|
|
|
|
type LogFormatter struct{}
|
|
|
|
func (f *LogFormatter) Format(entry *logrus.Entry) ([]byte, error) {
|
|
//根据不同的level显示不同的颜色
|
|
var levelColor int
|
|
switch entry.Level {
|
|
case logrus.DebugLevel, logrus.TraceLevel:
|
|
levelColor = gray
|
|
case logrus.WarnLevel:
|
|
levelColor = yellow
|
|
case logrus.ErrorLevel, logrus.FatalLevel, logrus.PanicLevel:
|
|
levelColor = red
|
|
default:
|
|
levelColor = blue
|
|
}
|
|
var b *bytes.Buffer
|
|
if entry.Buffer != nil {
|
|
b = entry.Buffer
|
|
} else {
|
|
b = &bytes.Buffer{}
|
|
}
|
|
log := global.CONFIG.Logger
|
|
// 自定义日期格式
|
|
timestamp := entry.Time.Format("2006-01-02 15:04:05")
|
|
if entry.HasCaller() {
|
|
//自定义文件路径
|
|
funcVal := entry.Caller.Function
|
|
fileVal := fmt.Sprintf("%s:%d", path.Base(entry.Caller.File), entry.Caller.Line)
|
|
//自定义输出格式
|
|
fmt.Fprintf(b, "%s[%s] \x1b[%dm[%s]\x1b[0m %s %s : %s\n", log.Prefix, timestamp, levelColor, entry.Level, fileVal, funcVal, entry.Message)
|
|
} else {
|
|
fmt.Fprintf(b, "%s[%s] \x1b[%dm[%s]\x1b[0m : %s\n", log.Prefix, timestamp, levelColor, entry.Level, entry.Message)
|
|
}
|
|
return b.Bytes(), nil
|
|
}
|
|
|
|
func InitLogger() *logrus.Logger {
|
|
newLog := logrus.New()
|
|
newLog.SetOutput(os.Stdout) //设置输出类型
|
|
newLog.SetReportCaller(global.CONFIG.Logger.ShowLine) //设置是否显示函数名和行号
|
|
newLog.SetFormatter(&LogFormatter{}) //设置日志格式
|
|
level, err := logrus.ParseLevel(global.CONFIG.Logger.Level)
|
|
if err != nil {
|
|
level = logrus.InfoLevel
|
|
}
|
|
newLog.SetLevel(level) //设置日志级别
|
|
global.LOG = newLog
|
|
initDefaultLogger()
|
|
return newLog
|
|
}
|
|
|
|
func initDefaultLogger() {
|
|
//全局日志
|
|
logrus.SetOutput(os.Stdout) //设置输出类型
|
|
logrus.SetReportCaller(global.CONFIG.Logger.ShowLine) //设置是否显示函数名和行号
|
|
logrus.SetFormatter(&LogFormatter{}) //设置日志格式
|
|
level, err := logrus.ParseLevel(global.CONFIG.Logger.Level)
|
|
if err != nil {
|
|
level = logrus.InfoLevel
|
|
}
|
|
logrus.SetLevel(level) //设置日志级别
|
|
}
|