codex optz.
This commit is contained in:
201
logger/logger.go
201
logger/logger.go
@@ -168,122 +168,94 @@ func (l *Logger) sendToRemote(level, name, out string) {
|
||||
utils.HttpPost(l.endpoint, nil, jsonBytes)
|
||||
}
|
||||
|
||||
func (l *Logger) loggerFor(level vars.LogLevel) (*log.Logger, string) {
|
||||
switch level {
|
||||
case vars.DEBUG:
|
||||
return l.debugLogger, "DEBUG"
|
||||
case vars.INFO:
|
||||
return l.infoLogger, "INFO"
|
||||
case vars.WARN:
|
||||
return l.warnLogger, "WARN"
|
||||
case vars.ERROR:
|
||||
return l.errorLogger, "ERROR"
|
||||
default:
|
||||
return l.fatalLogger, "FATAL"
|
||||
}
|
||||
}
|
||||
|
||||
func (l *Logger) output(level vars.LogLevel, out string, fatal bool) {
|
||||
if !fatal && l.level > level {
|
||||
return
|
||||
}
|
||||
|
||||
_ = l.checkAndRotateLog()
|
||||
logger, levelName := l.loggerFor(level)
|
||||
if fatal {
|
||||
logger = l.fatalLogger
|
||||
levelName = "FATAL"
|
||||
}
|
||||
if l.onRemote {
|
||||
go l.sendToRemote(levelName, l.name, out)
|
||||
}
|
||||
_ = logger.Output(3, out)
|
||||
|
||||
if fatal {
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
func (l *Logger) outputf(level vars.LogLevel, format string, v ...any) {
|
||||
l.output(level, fmt.Sprintf(format, v...), false)
|
||||
}
|
||||
|
||||
// Debug 输出调试信息
|
||||
func (l *Logger) Debug(v ...any) {
|
||||
if l.level <= vars.DEBUG {
|
||||
l.checkAndRotateLog()
|
||||
out := fmt.Sprint(v...)
|
||||
if l.onRemote {
|
||||
go l.sendToRemote("DEBUG", l.name, out)
|
||||
}
|
||||
l.debugLogger.Output(2, out)
|
||||
}
|
||||
l.output(vars.DEBUG, fmt.Sprint(v...), false)
|
||||
}
|
||||
|
||||
// Debugf 格式化输出调试信息
|
||||
func (l *Logger) Debugf(format string, v ...any) {
|
||||
if l.level <= vars.DEBUG {
|
||||
l.checkAndRotateLog()
|
||||
out := fmt.Sprintf(format, v...)
|
||||
if l.onRemote {
|
||||
go l.sendToRemote("DEBUG", l.name, out)
|
||||
}
|
||||
l.debugLogger.Output(2, out)
|
||||
}
|
||||
l.outputf(vars.DEBUG, format, v...)
|
||||
}
|
||||
|
||||
// Info 输出信息
|
||||
func (l *Logger) Info(v ...any) {
|
||||
if l.level <= vars.INFO {
|
||||
l.checkAndRotateLog()
|
||||
out := fmt.Sprint(v...)
|
||||
if l.onRemote {
|
||||
go l.sendToRemote("INFO", l.name, out)
|
||||
}
|
||||
l.infoLogger.Output(2, out)
|
||||
}
|
||||
l.output(vars.INFO, fmt.Sprint(v...), false)
|
||||
}
|
||||
|
||||
// Infof 格式化输出信息
|
||||
func (l *Logger) Infof(format string, v ...any) {
|
||||
if l.level <= vars.INFO {
|
||||
l.checkAndRotateLog()
|
||||
out := fmt.Sprintf(format, v...)
|
||||
if l.onRemote {
|
||||
go l.sendToRemote("INFO", l.name, out)
|
||||
}
|
||||
l.infoLogger.Output(2, out)
|
||||
}
|
||||
l.outputf(vars.INFO, format, v...)
|
||||
}
|
||||
|
||||
// Warn 输出警告
|
||||
func (l *Logger) Warn(v ...any) {
|
||||
if l.level <= vars.WARN {
|
||||
l.checkAndRotateLog()
|
||||
out := fmt.Sprint(v...)
|
||||
if l.onRemote {
|
||||
go l.sendToRemote("WARN", l.name, out)
|
||||
}
|
||||
l.warnLogger.Output(2, out)
|
||||
}
|
||||
l.output(vars.WARN, fmt.Sprint(v...), false)
|
||||
}
|
||||
|
||||
// Warnf 格式化输出警告
|
||||
func (l *Logger) Warnf(format string, v ...any) {
|
||||
if l.level <= vars.WARN {
|
||||
l.checkAndRotateLog()
|
||||
out := fmt.Sprintf(format, v...)
|
||||
if l.onRemote {
|
||||
go l.sendToRemote("WARN", l.name, out)
|
||||
}
|
||||
l.warnLogger.Output(2, out)
|
||||
}
|
||||
l.outputf(vars.WARN, format, v...)
|
||||
}
|
||||
|
||||
// Error 输出错误
|
||||
func (l *Logger) Error(v ...any) {
|
||||
if l.level <= vars.ERROR {
|
||||
l.checkAndRotateLog()
|
||||
out := fmt.Sprint(v...)
|
||||
if l.onRemote {
|
||||
go l.sendToRemote("ERROR", l.name, out)
|
||||
}
|
||||
l.errorLogger.Output(2, out)
|
||||
}
|
||||
l.output(vars.ERROR, fmt.Sprint(v...), false)
|
||||
}
|
||||
|
||||
// Errorf 格式化输出错误
|
||||
func (l *Logger) Errorf(format string, v ...any) {
|
||||
if l.level <= vars.ERROR {
|
||||
l.checkAndRotateLog()
|
||||
out := fmt.Sprintf(format, v...)
|
||||
if l.onRemote {
|
||||
go l.sendToRemote("ERROR", l.name, out)
|
||||
}
|
||||
l.errorLogger.Output(2, out)
|
||||
}
|
||||
l.outputf(vars.ERROR, format, v...)
|
||||
}
|
||||
|
||||
// Fatal 输出致命错误并退出程序
|
||||
func (l *Logger) Fatal(v ...any) {
|
||||
l.checkAndRotateLog()
|
||||
out := fmt.Sprint(v...)
|
||||
if l.onRemote {
|
||||
go l.sendToRemote("FATAL", l.name, out)
|
||||
}
|
||||
l.fatalLogger.Output(2, out)
|
||||
os.Exit(1)
|
||||
l.output(vars.ERROR, fmt.Sprint(v...), true)
|
||||
}
|
||||
|
||||
// Fatalf 格式化输出致命错误并退出程序
|
||||
func (l *Logger) Fatalf(format string, v ...any) {
|
||||
l.checkAndRotateLog()
|
||||
out := fmt.Sprintf(format, v...)
|
||||
if l.onRemote {
|
||||
go l.sendToRemote("FATAL", l.name, out)
|
||||
}
|
||||
l.fatalLogger.Output(2, out)
|
||||
os.Exit(1)
|
||||
l.output(vars.ERROR, fmt.Sprintf(format, v...), true)
|
||||
}
|
||||
|
||||
// Print 输出信息(兼容标准log包)
|
||||
@@ -325,95 +297,64 @@ func (l *Logger) Close() error {
|
||||
|
||||
// 全局日志函数(兼容标准log包)
|
||||
|
||||
// Debug 全局调试日志
|
||||
// Global logger functions.
|
||||
|
||||
func withGlobalLogger(fn func(*Logger)) {
|
||||
if globalLogger != nil {
|
||||
fn(globalLogger)
|
||||
}
|
||||
}
|
||||
|
||||
func Debug(v ...any) {
|
||||
if globalLogger != nil {
|
||||
globalLogger.Debug(v...)
|
||||
}
|
||||
withGlobalLogger(func(l *Logger) { l.Debug(v...) })
|
||||
}
|
||||
|
||||
// Debugf 全局调试日志
|
||||
func Debugf(format string, v ...any) {
|
||||
if globalLogger != nil {
|
||||
globalLogger.Debugf(format, v...)
|
||||
}
|
||||
withGlobalLogger(func(l *Logger) { l.Debugf(format, v...) })
|
||||
}
|
||||
|
||||
// Info 全局信息日志
|
||||
func Info(v ...any) {
|
||||
if globalLogger != nil {
|
||||
globalLogger.Info(v...)
|
||||
}
|
||||
withGlobalLogger(func(l *Logger) { l.Info(v...) })
|
||||
}
|
||||
|
||||
// Infof 全局信息日志
|
||||
func Infof(format string, v ...any) {
|
||||
if globalLogger != nil {
|
||||
globalLogger.Infof(format, v...)
|
||||
}
|
||||
withGlobalLogger(func(l *Logger) { l.Infof(format, v...) })
|
||||
}
|
||||
|
||||
// Warn 全局警告日志
|
||||
func Warn(v ...any) {
|
||||
if globalLogger != nil {
|
||||
globalLogger.Warn(v...)
|
||||
}
|
||||
withGlobalLogger(func(l *Logger) { l.Warn(v...) })
|
||||
}
|
||||
|
||||
// Warnf 全局警告日志
|
||||
func Warnf(format string, v ...any) {
|
||||
if globalLogger != nil {
|
||||
globalLogger.Warnf(format, v...)
|
||||
}
|
||||
withGlobalLogger(func(l *Logger) { l.Warnf(format, v...) })
|
||||
}
|
||||
|
||||
// Error 全局错误日志
|
||||
func Error(v ...any) {
|
||||
if globalLogger != nil {
|
||||
globalLogger.Error(v...)
|
||||
}
|
||||
withGlobalLogger(func(l *Logger) { l.Error(v...) })
|
||||
}
|
||||
|
||||
// Errorf 全局错误日志
|
||||
func Errorf(format string, v ...any) {
|
||||
if globalLogger != nil {
|
||||
globalLogger.Errorf(format, v...)
|
||||
}
|
||||
withGlobalLogger(func(l *Logger) { l.Errorf(format, v...) })
|
||||
}
|
||||
|
||||
// Fatal 全局致命错误日志
|
||||
func Fatal(v ...any) {
|
||||
if globalLogger != nil {
|
||||
globalLogger.Fatal(v...)
|
||||
}
|
||||
withGlobalLogger(func(l *Logger) { l.Fatal(v...) })
|
||||
}
|
||||
|
||||
// Fatalf 全局致命错误日志
|
||||
func Fatalf(format string, v ...any) {
|
||||
if globalLogger != nil {
|
||||
globalLogger.Fatalf(format, v...)
|
||||
}
|
||||
withGlobalLogger(func(l *Logger) { l.Fatalf(format, v...) })
|
||||
}
|
||||
|
||||
// Print 全局打印日志(兼容标准log包)
|
||||
func Print(v ...any) {
|
||||
if globalLogger != nil {
|
||||
globalLogger.Print(v...)
|
||||
}
|
||||
withGlobalLogger(func(l *Logger) { l.Print(v...) })
|
||||
}
|
||||
|
||||
// Printf 全局打印日志(兼容标准log包)
|
||||
func Printf(format string, v ...any) {
|
||||
if globalLogger != nil {
|
||||
globalLogger.Printf(format, v...)
|
||||
}
|
||||
withGlobalLogger(func(l *Logger) { l.Printf(format, v...) })
|
||||
}
|
||||
|
||||
// Println 全局打印日志(兼容标准log包)
|
||||
func Println(v ...any) {
|
||||
if globalLogger != nil {
|
||||
globalLogger.Println(v...)
|
||||
}
|
||||
withGlobalLogger(func(l *Logger) { l.Println(v...) })
|
||||
}
|
||||
|
||||
// GetLogger 获取全局日志器实例
|
||||
|
||||
Reference in New Issue
Block a user