From 956c64f3e29166b92e5c1bb676279609c5830d02 Mon Sep 17 00:00:00 2001 From: fangyincheng <fangyincheng@sina.com> Date: Sun, 1 Dec 2019 15:27:47 +0800 Subject: [PATCH] Add: add SetLoggerLevel --- common/logger/logger.go | 27 ++++++++++++++++++++++++++- common/logger/logger_test.go | 16 ++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/common/logger/logger.go b/common/logger/logger.go index f41e95744..db91d2e7c 100644 --- a/common/logger/logger.go +++ b/common/logger/logger.go @@ -40,6 +40,11 @@ var ( logger Logger ) +type DubboLogger struct { + Logger + dynamicLevel zap.AtomicLevel +} + type Logger interface { Info(args ...interface{}) Warn(args ...interface{}) @@ -109,7 +114,8 @@ func InitLogger(conf *zap.Config) { zapLoggerConfig = *conf } zapLogger, _ := zapLoggerConfig.Build(zap.AddCallerSkip(1)) - logger = zapLogger.Sugar() + //logger = zapLogger.Sugar() + logger = &DubboLogger{Logger: zapLogger.Sugar(), dynamicLevel: zapLoggerConfig.Level} // set getty log getty.SetLogger(logger) @@ -123,3 +129,22 @@ func SetLogger(log Logger) { func GetLogger() Logger { return logger } + +func SetLoggerLevel(level string) bool { + if l, ok := logger.(OpsLogger); ok { + l.SetLoggerLevel(level) + return true + } + return false +} + +type OpsLogger interface { + Logger + SetLoggerLevel(level string) +} + +func (dl *DubboLogger) SetLoggerLevel(level string) { + l := new(zapcore.Level) + l.Set(level) + dl.dynamicLevel.SetLevel(*l) +} diff --git a/common/logger/logger_test.go b/common/logger/logger_test.go index e29b7cbc8..6081f71ae 100644 --- a/common/logger/logger_test.go +++ b/common/logger/logger_test.go @@ -65,3 +65,19 @@ func TestInitLog(t *testing.T) { Warnf("%s", "warn") Errorf("%s", "error") } + +func TestSetLevel(t *testing.T) { + err := InitLog("./log.yml") + assert.NoError(t, err) + Debug("debug") + Info("info") + + assert.True(t, SetLoggerLevel("info")) + Debug("debug") + Info("info") + + SetLogger(GetLogger().(*DubboLogger).Logger) + assert.False(t, SetLoggerLevel("debug")) + Debug("debug") + Info("info") +} -- GitLab