package core import "fmt" var _ IModuleLogger = (*ModuleLogger)(nil) var _ IModuleLogLevelLimiter = (*ModuleLogger)(nil) type ModuleLogger struct { module string levelLimit uint8 baseLogger ILogger } func (ml *ModuleLogger) CloseThisLog() { ml.baseLogger.DiscardSubLoggerByPrefix(ml.module) } func (ml *ModuleLogger) CloseSubLog(suffix string) { prefix := ml.module name := fmt.Sprintf("%s/%s", prefix, suffix) ml.baseLogger.DiscardSubLoggerByPrefix(name) } func (ml *ModuleLogger) LimitLogLevel(level uint8) { if level > 4 { ml.levelLimit = 0 return } ml.levelLimit = level } func (ml *ModuleLogger) GetModuleName() string { return ml.module } func (ml *ModuleLogger) GetSubLog(suffix string) IModuleLogger { prefix := ml.module name := fmt.Sprintf("%s/%s", prefix, suffix) return ml.baseLogger.GetModuleLogger(name) } func NewModuleLogger(module string, base ILogger) *ModuleLogger { return &ModuleLogger{ module: module, baseLogger: base, } } func (ml *ModuleLogger) Fatal(d ...interface{}) { ml.baseLogger.BLFatal(ml.module, d...) } func (ml *ModuleLogger) FatalF(format string, d ...interface{}) { ml.baseLogger.BLFatalF(ml.module, format, d...) } func (ml *ModuleLogger) FatalC(data map[string]string) { ml.baseLogger.BLFatalC(ml.module, data) } func (ml *ModuleLogger) Panic(d ...interface{}) { ml.baseLogger.BLPanic(ml.module, d...) } func (ml *ModuleLogger) PanicF(format string, d ...interface{}) { ml.baseLogger.BLPanicF(ml.module, format, d...) } func (ml *ModuleLogger) PanicC(data map[string]string) { ml.baseLogger.BLPanicC(ml.module, data) } func (ml *ModuleLogger) Error(d ...interface{}) { ml.baseLogger.BLError(ml.module, d...) } func (ml *ModuleLogger) ErrorF(format string, d ...interface{}) { ml.baseLogger.BLErrorF(ml.module, format, d...) } func (ml *ModuleLogger) ErrorC(data map[string]string) { ml.baseLogger.BLErrorC(ml.module, data) } func (ml *ModuleLogger) Warn(d ...interface{}) { if ml.levelLimit > 3 { return } ml.baseLogger.BLWarn(ml.module, d...) } func (ml *ModuleLogger) WarnF(format string, d ...interface{}) { if ml.levelLimit > 3 { return } ml.baseLogger.BLWarnF(ml.module, format, d...) } func (ml *ModuleLogger) WarnC(data map[string]string) { if ml.levelLimit > 3 { return } ml.baseLogger.BLWarnC(ml.module, data) } func (ml *ModuleLogger) Info(d ...interface{}) { if ml.levelLimit > 2 { return } ml.baseLogger.BLInfo(ml.module, d...) } func (ml *ModuleLogger) InfoF(format string, d ...interface{}) { if ml.levelLimit > 2 { return } ml.baseLogger.BLInfoF(ml.module, format, d...) } func (ml *ModuleLogger) InfoC(data map[string]string) { if ml.levelLimit > 2 { return } ml.baseLogger.BLInfoC(ml.module, data) } func (ml *ModuleLogger) Verbose(d ...interface{}) { if ml.levelLimit > 1 { return } ml.baseLogger.BLVerbose(ml.module, d...) } func (ml *ModuleLogger) VerboseF(format string, d ...interface{}) { if ml.levelLimit > 1 { return } ml.baseLogger.BLVerboseF(ml.module, format, d...) } func (ml *ModuleLogger) VerboseC(data map[string]string) { if ml.levelLimit > 1 { return } ml.baseLogger.BLVerboseC(ml.module, data) } func (ml *ModuleLogger) Debug(d ...interface{}) { if ml.levelLimit > 0 { return } ml.baseLogger.BLDebug(ml.module, d...) } func (ml *ModuleLogger) DebugF(format string, d ...interface{}) { if ml.levelLimit > 0 { return } ml.baseLogger.BLDebugF(ml.module, format, d...) } func (ml *ModuleLogger) DebugC(data map[string]string) { if ml.levelLimit > 0 { return } ml.baseLogger.BLDebugC(ml.module, data) }