UA3F/log/log.go
2023-12-08 00:29:34 +08:00

58 lines
1.3 KiB
Go

package log
import (
"bytes"
"fmt"
"io"
"log"
"os"
"strings"
"github.com/sirupsen/logrus"
)
type uctFormatter struct {
}
func (formatter *uctFormatter) Format(entry *logrus.Entry) ([]byte, error) {
var b *bytes.Buffer
if entry.Buffer != nil {
b = entry.Buffer
} else {
b = &bytes.Buffer{}
}
formatTime := entry.Time.Format("2006-01-02 15:04:05")
b.WriteString(fmt.Sprintf("[%s][%s]: %s\n", formatTime, strings.ToUpper(entry.Level.String()), entry.Message))
return b.Bytes(), nil
}
func SetLogConf(level string) {
writer1 := &bytes.Buffer{}
writer2 := os.Stdout
writer3, err := os.OpenFile("/var/log/ua3f.log", os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0755)
if err != nil {
log.Fatalf("create file ua3f.log failed: %v", err)
}
logrus.SetOutput(io.MultiWriter(writer1, writer2, writer3))
formatter := &uctFormatter{}
logrus.SetFormatter(formatter)
switch level {
case "trace":
logrus.SetLevel(logrus.TraceLevel)
case "debug":
logrus.SetLevel(logrus.DebugLevel)
case "info":
logrus.SetLevel(logrus.InfoLevel)
case "warn":
logrus.SetLevel(logrus.WarnLevel)
case "error":
logrus.SetLevel(logrus.ErrorLevel)
case "fatal":
logrus.SetLevel(logrus.FatalLevel)
case "panic":
logrus.SetLevel(logrus.PanicLevel)
default:
logrus.SetLevel(logrus.InfoLevel)
}
}