|
- package logger
-
- import (
- "fmt"
- "os"
- "path/filepath"
- "strings"
-
- nested "github.com/antonfisher/nested-logrus-formatter"
- "github.com/sirupsen/logrus"
- )
-
- const (
- TRACE_LEVEL = "TRACE"
- DEBUG_LEVEL = "DEBUG"
- INFO_LEVEL = "INFO"
- WARN_LEVEL = "WARN"
- ERROR_LEVEL = "ERROR"
- FATAL_LEVEL = "FATAL"
- PANIC_LEVEL = "PANIC"
-
- OUTPUT_FILE = "FILE"
- OUTPUT_STDOUT = "STDOUT"
- )
-
- var loggerLevels = map[string]logrus.Level{
- TRACE_LEVEL: logrus.TraceLevel,
- DEBUG_LEVEL: logrus.DebugLevel,
- INFO_LEVEL: logrus.InfoLevel,
- WARN_LEVEL: logrus.WarnLevel,
- ERROR_LEVEL: logrus.ErrorLevel,
- FATAL_LEVEL: logrus.FatalLevel,
- PANIC_LEVEL: logrus.PanicLevel,
- }
-
- // Init 初始化全局默认的日志器
- func Init(cfg *Config) error {
- logrus.SetFormatter(&nested.Formatter{
- TimestampFormat: "2006-01-02 15:04:05",
- NoColors: true,
- NoFieldsColors: true,
- })
-
- level, ok := loggerLevels[strings.ToUpper(cfg.Level)]
- if !ok {
- return fmt.Errorf("invalid log level: %s", cfg.Level)
- }
-
- logrus.SetLevel(level)
-
- output := strings.ToUpper(cfg.Output)
-
- if output == OUTPUT_FILE {
- logFilePath := filepath.Join(cfg.OutputDirectory, cfg.OutputFileName+".log")
-
- if err := os.MkdirAll(cfg.OutputDirectory, 0644); err != nil {
- return err
- }
-
- file, err := os.OpenFile(logFilePath, os.O_APPEND|os.O_CREATE, 0644)
- if err != nil {
- return err
- }
- logrus.SetOutput(file)
-
- } else if output == OUTPUT_STDOUT {
- logrus.SetOutput(os.Stdout)
- } else {
- logrus.SetOutput(os.Stdout)
- logrus.Warnf("unsupported output: %s, will output to stdout", output)
- }
-
- return nil
- }
-
- func Debug(args ...interface{}) {
- logrus.Debug(args...)
- }
-
- func Debugf(format string, args ...interface{}) {
- logrus.Debugf(format, args...)
- }
-
- func Info(args ...interface{}) {
- logrus.Info(args...)
- }
-
- func Infof(format string, args ...interface{}) {
- logrus.Infof(format, args...)
- }
-
- func Warn(args ...interface{}) {
- logrus.Warn(args...)
- }
-
- func Warnf(format string, args ...interface{}) {
- logrus.Warnf(format, args...)
- }
-
- func Error(args ...interface{}) {
- logrus.Error(args...)
- }
-
- func Errorf(format string, args ...interface{}) {
- logrus.Errorf(format, args...)
- }
-
- func Fatal(args ...interface{}) {
- logrus.Fatal(args...)
- }
-
- func Fatalf(format string, args ...interface{}) {
- logrus.Fatalf(format, args...)
- }
-
- func Panic(args ...interface{}) {
- logrus.Panic(args...)
- }
-
- func Panicf(format string, args ...interface{}) {
- logrus.Panicf(format, args...)
- }
-
- func WithField(key string, val any) *logrus.Entry {
- return logrus.WithField(key, val)
- }
|