|
- package logger
-
- import (
- "fmt"
- "os"
- "path/filepath"
- "strings"
-
- nested "github.com/antonfisher/nested-logrus-formatter"
- "github.com/sirupsen/logrus"
- myreflect "gitlink.org.cn/cloudream/common/utils/reflect"
- )
-
- // 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) Logger {
- return &logrusLogger{
- entry: logrus.WithField(key, val),
- }
- }
-
- func WithType[T any](key string) Logger {
- return &logrusLogger{
- entry: logrus.WithField(key, myreflect.TypeOf[T]().Name()),
- }
- }
|