package initial
import (
"bytes"
"fmt"
"io"
"os"
"path/filepath"
"github.com/astaxie/beego"
log "github.com/sirupsen/logrus"
lumberjack "gopkg.in/natefinch/lumberjack.v2"
)
type MyFormatter struct{}
func (m *MyFormatter) Format(entry *log.Entry) ([]byte, error) {
var b *bytes.Buffer
if entry.Buffer != nil {
b = entry.Buffer
} else {
b = &bytes.Buffer{}
}
timestamp := entry.Time.Format("2006-01-02 15:04:05")
var newLog string
if entry.HasCaller() {
fName := filepath.Base(entry.Caller.File)
newLog = fmt.Sprintf("[%s] [%s] [%s:%d]: %s\n",
timestamp, entry.Level, fName, entry.Caller.Line, entry.Message)
} else {
newLog = fmt.Sprintf("[%s] [%s] %s\n", timestamp, entry.Level, entry.Message)
}
b.WriteString(newLog)
return b.Bytes(), nil
}
func InitLog() {
log.SetFormatter(&MyFormatter{})
// 0 panic
// 2 error
// 4 Info
// 5 debug
logLevel := beego.AppConfig.DefaultInt("logLevel", 5)
logPath := beego.AppConfig.DefaultString("logPath", "/var/log/harbor-imgsvr/harbor-imgsvr.log")
log.SetLevel(log.Level(logLevel))
log.SetReportCaller(true)
logger := &lumberjack.Logger{
LocalTime: true,
Filename: logPath,
MaxSize: 20, // 一个文件最大为20M
MaxBackups: 5, // 最多同时保存5份文件
MaxAge: 30, // 一个文件最多同时存在30天
Compress: false,
}
writers := []io.Writer{
logger,
os.Stdout,
}
fileAndStdoutWriter := io.MultiWriter(writers...) //
log.SetOutput(fileAndStdoutWriter)
}
go语言logrus使用,以及进行日志切割
于 2020-08-25 16:20:17 首次发布