You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
2.6 KiB
125 lines
2.6 KiB
package logger |
|
|
|
import ( |
|
"github.com/sirupsen/logrus" |
|
"runtime" |
|
"strconv" |
|
"strings" |
|
) |
|
|
|
var Logger *SoLogger |
|
|
|
func init() { |
|
Logger = &SoLogger{logger: logrus.StandardLogger()} |
|
} |
|
|
|
type SoLogger struct { |
|
logger *logrus.Logger |
|
} |
|
|
|
func (l *SoLogger) enhance(args []any) (ret []any) { |
|
//logrus.SetReportCaller(true) |
|
ret = args |
|
for i := 2; i < 5; i++ { |
|
_, file, line, ok := runtime.Caller(i) |
|
if !ok { |
|
return |
|
} |
|
if strings.HasSuffix(file, "/pkg/utils/logger/exported.go") || |
|
strings.HasSuffix(file, "/pkg/utils/logger/logger.go") { |
|
continue |
|
} |
|
|
|
//caller = fmt.Sprintf("%s:%d ", file, line) |
|
caller := file + ":" + strconv.Itoa(line) + " " |
|
if arg0, ok := ret[0].(string); ok { |
|
ret[0] = caller + arg0 |
|
return |
|
} |
|
|
|
ret = make([]any, len(args)+1) |
|
ret[0] = caller |
|
copy(ret[1:], args) |
|
return |
|
} |
|
return |
|
} |
|
|
|
func (l *SoLogger) enhancef(format string, args []any) (retf string, ret []any) { |
|
args2 := make([]any, len(args)+1) |
|
args2[0] = format |
|
copy(args2[1:], args) |
|
|
|
ret = l.enhance(args2) |
|
retf = ret[0].(string) |
|
ret = ret[1:] |
|
return |
|
} |
|
|
|
func (l *SoLogger) Info(args ...any) { |
|
l.logger.Info(l.enhance(args)...) |
|
} |
|
|
|
func (l *SoLogger) Infoln(args ...any) { |
|
l.logger.Infoln(l.enhance(args)...) |
|
} |
|
|
|
func (l *SoLogger) Infof(format string, args ...any) { |
|
format, args = l.enhancef(format, args) |
|
l.logger.Infof(format, args...) |
|
} |
|
|
|
func (l *SoLogger) Warning(args ...any) { |
|
l.logger.Warning(l.enhance(args)...) |
|
} |
|
|
|
func (l *SoLogger) Warningln(args ...any) { |
|
l.logger.Warningln(l.enhance(args)...) |
|
} |
|
|
|
func (l *SoLogger) Warningf(format string, args ...any) { |
|
format, args = l.enhancef(format, args) |
|
l.logger.Warningf(format, args...) |
|
} |
|
|
|
func (l *SoLogger) Error(args ...any) { |
|
l.logger.Error(l.enhance(args)...) |
|
} |
|
|
|
func (l *SoLogger) Errorln(args ...any) { |
|
l.logger.Errorln(l.enhance(args)...) |
|
} |
|
|
|
func (l *SoLogger) Errorf(format string, args ...any) { |
|
format, args = l.enhancef(format, args) |
|
l.logger.Errorf(format, args...) |
|
} |
|
|
|
func (l *SoLogger) Fatal(args ...any) { |
|
l.logger.Fatal(l.enhance(args)...) |
|
} |
|
|
|
func (l *SoLogger) Fatalln(args ...any) { |
|
l.logger.Fatalln(l.enhance(args)...) |
|
} |
|
|
|
func (l *SoLogger) Fatalf(format string, args ...any) { |
|
format, args = l.enhancef(format, args) |
|
l.logger.Fatalf(format, args...) |
|
} |
|
|
|
var ( |
|
logrusLevels = []logrus.Level{logrus.TraceLevel, logrus.DebugLevel, logrus.InfoLevel, logrus.WarnLevel, logrus.ErrorLevel, logrus.FatalLevel, logrus.PanicLevel} |
|
logrusLevelsLen = len(logrusLevels) |
|
) |
|
|
|
// V enable level |
|
// grpclog:info=2,warn=3... |
|
// logrus: warn=3,info=4... |
|
func (l *SoLogger) V(level int) bool { |
|
return level == 1 |
|
//if level >= logrusLevelsLen { |
|
// return true |
|
//} |
|
//return logrusLevels[level] <= l.logger.Level |
|
}
|
|
|