From cc5a43c73f36bc125bf24c7f37f1e19428b6ffb1 Mon Sep 17 00:00:00 2001 From: Jim Ma Date: Wed, 9 Feb 2022 20:52:00 +0800 Subject: [PATCH] feat: support change console log level (#1055) Signed-off-by: Jim Ma --- .golangci.yml | 1 - cmd/cdn/cmd/root.go | 3 +- cmd/dependency/dependency.go | 4 +- cmd/dfget/cmd/daemon.go | 3 +- cmd/dfget/cmd/root.go | 3 +- cmd/manager/cmd/root.go | 3 +- cmd/scheduler/cmd/root.go | 3 +- internal/dflog/{logcore => }/logcore.go | 2 +- internal/dflog/logger.go | 12 ++- .../dflog/{logcore/init.go => loginit.go} | 85 ++++++++----------- internal/dflog/{logcore => }/signal.go | 9 +- pkg/log/log.go | 8 +- 12 files changed, 59 insertions(+), 77 deletions(-) rename internal/dflog/{logcore => }/logcore.go (99%) rename internal/dflog/{logcore/init.go => loginit.go} (67%) rename internal/dflog/{logcore => }/signal.go (86%) diff --git a/.golangci.yml b/.golangci.yml index 4fe0aa431..bf4f70a0f 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -13,7 +13,6 @@ linters: enable: - gci - gofmt - - goimports - golint - misspell - govet diff --git a/cmd/cdn/cmd/root.go b/cmd/cdn/cmd/root.go index 71c87d31c..3fe84ff82 100644 --- a/cmd/cdn/cmd/root.go +++ b/cmd/cdn/cmd/root.go @@ -27,7 +27,6 @@ import ( "d7y.io/dragonfly/v2/cdn/config" "d7y.io/dragonfly/v2/cmd/dependency" logger "d7y.io/dragonfly/v2/internal/dflog" - "d7y.io/dragonfly/v2/internal/dflog/logcore" "d7y.io/dragonfly/v2/pkg/dfpath" "d7y.io/dragonfly/v2/pkg/source" "d7y.io/dragonfly/v2/version" @@ -57,7 +56,7 @@ from remote source repeatedly.`, } // Initialize logger - if err := logcore.InitCdnSystem(cfg.Console, d.LogDir()); err != nil { + if err := logger.InitCdnSystem(cfg.Console, d.LogDir()); err != nil { return errors.Wrap(err, "init cdn system logger") } diff --git a/cmd/dependency/dependency.go b/cmd/dependency/dependency.go index 5a5e723bc..31d24f32b 100644 --- a/cmd/dependency/dependency.go +++ b/cmd/dependency/dependency.go @@ -47,7 +47,6 @@ import ( "d7y.io/dragonfly/v2/client/config" "d7y.io/dragonfly/v2/cmd/dependency/base" logger "d7y.io/dragonfly/v2/internal/dflog" - "d7y.io/dragonfly/v2/internal/dflog/logcore" "d7y.io/dragonfly/v2/internal/dfnet" "d7y.io/dragonfly/v2/pkg/dfpath" "d7y.io/dragonfly/v2/pkg/unit" @@ -94,8 +93,7 @@ func InitMonitor(verbose bool, pprofPort int, otelOption base.TelemetryOption) f var fc = make(chan func(), 5) if verbose { - logcore.SetCoreLevel(zapcore.DebugLevel) - logcore.SetGrpcLevel(zapcore.DebugLevel) + logger.SetLevel(zapcore.DebugLevel) } if pprofPort >= 0 { diff --git a/cmd/dfget/cmd/daemon.go b/cmd/dfget/cmd/daemon.go index bcbc28e53..15d16354d 100644 --- a/cmd/dfget/cmd/daemon.go +++ b/cmd/dfget/cmd/daemon.go @@ -31,7 +31,6 @@ import ( server "d7y.io/dragonfly/v2/client/daemon" "d7y.io/dragonfly/v2/cmd/dependency" logger "d7y.io/dragonfly/v2/internal/dflog" - "d7y.io/dragonfly/v2/internal/dflog/logcore" "d7y.io/dragonfly/v2/internal/dfnet" "d7y.io/dragonfly/v2/pkg/dfpath" "d7y.io/dragonfly/v2/pkg/rpc/dfdaemon/client" @@ -61,7 +60,7 @@ it supports container engine, wget and other downloading tools through proxy fun } // Initialize logger - if err := logcore.InitDaemon(cfg.Console, d.LogDir()); err != nil { + if err := logger.InitDaemon(cfg.Console, d.LogDir()); err != nil { return errors.Wrap(err, "init client daemon logger") } diff --git a/cmd/dfget/cmd/root.go b/cmd/dfget/cmd/root.go index bcf8c41c7..bc623d227 100644 --- a/cmd/dfget/cmd/root.go +++ b/cmd/dfget/cmd/root.go @@ -36,7 +36,6 @@ import ( "d7y.io/dragonfly/v2/cmd/dependency" "d7y.io/dragonfly/v2/internal/constants" logger "d7y.io/dragonfly/v2/internal/dflog" - "d7y.io/dragonfly/v2/internal/dflog/logcore" "d7y.io/dragonfly/v2/internal/dfnet" "d7y.io/dragonfly/v2/pkg/basic" "d7y.io/dragonfly/v2/pkg/dfpath" @@ -77,7 +76,7 @@ var rootCmd = &cobra.Command{ } // Initialize logger - if err := logcore.InitDfget(dfgetConfig.Console, d.LogDir()); err != nil { + if err := logger.InitDfget(dfgetConfig.Console, d.LogDir()); err != nil { return errors.Wrap(err, "init client dfget logger") } diff --git a/cmd/manager/cmd/root.go b/cmd/manager/cmd/root.go index 48e4dce5b..68b5b6b0f 100644 --- a/cmd/manager/cmd/root.go +++ b/cmd/manager/cmd/root.go @@ -25,7 +25,6 @@ import ( "d7y.io/dragonfly/v2/cmd/dependency" logger "d7y.io/dragonfly/v2/internal/dflog" - "d7y.io/dragonfly/v2/internal/dflog/logcore" "d7y.io/dragonfly/v2/manager" "d7y.io/dragonfly/v2/manager/config" "d7y.io/dragonfly/v2/pkg/dfpath" @@ -53,7 +52,7 @@ for managing schedulers and cdns, offering http apis and portal, etc.`, } // Initialize logger - if err := logcore.InitManager(cfg.Console, d.LogDir()); err != nil { + if err := logger.InitManager(cfg.Console, d.LogDir()); err != nil { return errors.Wrap(err, "init manager logger") } diff --git a/cmd/scheduler/cmd/root.go b/cmd/scheduler/cmd/root.go index 9cd887022..1473e1fb5 100644 --- a/cmd/scheduler/cmd/root.go +++ b/cmd/scheduler/cmd/root.go @@ -26,7 +26,6 @@ import ( "d7y.io/dragonfly/v2/cmd/dependency" logger "d7y.io/dragonfly/v2/internal/dflog" - "d7y.io/dragonfly/v2/internal/dflog/logcore" "d7y.io/dragonfly/v2/pkg/dfpath" "d7y.io/dragonfly/v2/scheduler" "d7y.io/dragonfly/v2/scheduler/config" @@ -57,7 +56,7 @@ generate and maintain a P2P network during the download process, and push suitab } // Initialize logger - if err := logcore.InitScheduler(cfg.Console, d.LogDir()); err != nil { + if err := logger.InitScheduler(cfg.Console, d.LogDir()); err != nil { return errors.Wrap(err, "init scheduler logger") } diff --git a/internal/dflog/logcore/logcore.go b/internal/dflog/logcore.go similarity index 99% rename from internal/dflog/logcore/logcore.go rename to internal/dflog/logcore.go index 74617f998..98d5c4127 100644 --- a/internal/dflog/logcore/logcore.go +++ b/internal/dflog/logcore.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package logcore +package logger import ( "strings" diff --git a/internal/dflog/logger.go b/internal/dflog/logger.go index 8c2dfec58..18c665f4a 100644 --- a/internal/dflog/logger.go +++ b/internal/dflog/logger.go @@ -20,6 +20,7 @@ import ( "fmt" "go.uber.org/zap" + "go.uber.org/zap/zapcore" "google.golang.org/grpc/grpclog" ) @@ -36,7 +37,7 @@ var ( func init() { config := zap.NewDevelopmentConfig() - config.Level = zap.NewAtomicLevelAt(zap.DebugLevel) + config.Level = zap.NewAtomicLevelAt(zap.InfoLevel) log, err := config.Build(zap.AddCaller(), zap.AddStacktrace(zap.WarnLevel), zap.AddCallerSkip(1)) if err == nil { sugar := log.Sugar() @@ -49,6 +50,15 @@ func init() { SetDownloadLogger(log) SetJobLogger(sugar) } + levels = append(levels, config.Level) +} + +// SetLevel updates all log level +func SetLevel(level zapcore.Level) { + Infof("change log level to %s", level.String()) + for _, l := range levels { + l.SetLevel(level) + } } func SetCoreLogger(log *zap.SugaredLogger) { diff --git a/internal/dflog/logcore/init.go b/internal/dflog/loginit.go similarity index 67% rename from internal/dflog/logcore/init.go rename to internal/dflog/loginit.go index 7fc179304..5affe5039 100644 --- a/internal/dflog/logcore/init.go +++ b/internal/dflog/loginit.go @@ -14,15 +14,13 @@ * limitations under the License. */ -package logcore +package logger import ( "path" "path/filepath" "go.uber.org/zap" - - logger "d7y.io/dragonfly/v2/internal/dflog" ) type logInitMeta struct { @@ -31,7 +29,14 @@ type logInitMeta struct { setLoggerFunc func(log *zap.Logger) } -func createLogger(meta []logInitMeta, logDir string) error { +func createLogger(console bool, meta []logInitMeta, logDir string) error { + if console { + startLoggerSignalHandler() + return nil + } + // drop console level + levels = nil + for _, m := range meta { log, level, err := CreateLogger(path.Join(logDir, m.fileName), false, false) if err != nil { @@ -50,149 +55,129 @@ func createLogger(meta []logInitMeta, logDir string) error { } func InitManager(console bool, dir string) error { - if console { - return nil - } - logDir := filepath.Join(dir, "manager") var meta = []logInitMeta{ { fileName: CoreLogFileName, - setSugaredLoggerFunc: logger.SetCoreLogger, + setSugaredLoggerFunc: SetCoreLogger, }, { fileName: GrpcLogFileName, - setSugaredLoggerFunc: logger.SetGrpcLogger, + setSugaredLoggerFunc: SetGrpcLogger, }, { fileName: GCLogFileName, - setSugaredLoggerFunc: logger.SetGCLogger, + setSugaredLoggerFunc: SetGCLogger, }, { fileName: JobLogFileName, - setSugaredLoggerFunc: logger.SetJobLogger, + setSugaredLoggerFunc: SetJobLogger, }, } - return createLogger(meta, logDir) + return createLogger(console, meta, logDir) } func InitScheduler(console bool, dir string) error { - if console { - return nil - } - logDir := filepath.Join(dir, "scheduler") var meta = []logInitMeta{ { fileName: CoreLogFileName, - setSugaredLoggerFunc: logger.SetCoreLogger, + setSugaredLoggerFunc: SetCoreLogger, }, { fileName: GrpcLogFileName, - setSugaredLoggerFunc: logger.SetGrpcLogger, + setSugaredLoggerFunc: SetGrpcLogger, }, { fileName: GCLogFileName, - setSugaredLoggerFunc: logger.SetGCLogger, + setSugaredLoggerFunc: SetGCLogger, }, { fileName: JobLogFileName, - setSugaredLoggerFunc: logger.SetJobLogger, + setSugaredLoggerFunc: SetJobLogger, }, } - return createLogger(meta, logDir) + return createLogger(console, meta, logDir) } func InitCdnSystem(console bool, dir string) error { - if console { - return nil - } - logDir := filepath.Join(dir, "cdn") var meta = []logInitMeta{ { fileName: CoreLogFileName, - setSugaredLoggerFunc: logger.SetCoreLogger, + setSugaredLoggerFunc: SetCoreLogger, }, { fileName: GrpcLogFileName, - setSugaredLoggerFunc: logger.SetGrpcLogger, + setSugaredLoggerFunc: SetGrpcLogger, }, { fileName: GCLogFileName, - setSugaredLoggerFunc: logger.SetGCLogger, + setSugaredLoggerFunc: SetGCLogger, }, { fileName: StorageGCLogFileName, - setSugaredLoggerFunc: logger.SetStorageGCLogger, + setSugaredLoggerFunc: SetStorageGCLogger, }, { fileName: JobLogFileName, - setSugaredLoggerFunc: logger.SetJobLogger, + setSugaredLoggerFunc: SetJobLogger, }, { fileName: StatSeedLogFileName, - setLoggerFunc: logger.SetStatSeedLogger, + setLoggerFunc: SetStatSeedLogger, }, { fileName: DownloaderLogFileName, - setLoggerFunc: logger.SetDownloadLogger, + setLoggerFunc: SetDownloadLogger, }, { fileName: KeepAliveLogFileName, - setSugaredLoggerFunc: logger.SetKeepAliveLogger, + setSugaredLoggerFunc: SetKeepAliveLogger, }, } - return createLogger(meta, logDir) + return createLogger(console, meta, logDir) } func InitDaemon(console bool, dir string) error { - if console { - return nil - } - logDir := filepath.Join(dir, "daemon") var meta = []logInitMeta{ { fileName: CoreLogFileName, - setSugaredLoggerFunc: logger.SetCoreLogger, + setSugaredLoggerFunc: SetCoreLogger, }, { fileName: GrpcLogFileName, - setSugaredLoggerFunc: logger.SetGrpcLogger, + setSugaredLoggerFunc: SetGrpcLogger, }, { fileName: GCLogFileName, - setSugaredLoggerFunc: logger.SetGCLogger, + setSugaredLoggerFunc: SetGCLogger, }, } - return createLogger(meta, logDir) + return createLogger(console, meta, logDir) } func InitDfget(console bool, dir string) error { - if console { - return nil - } - logDir := filepath.Join(dir, "dfget") var meta = []logInitMeta{ { fileName: CoreLogFileName, - setSugaredLoggerFunc: logger.SetCoreLogger, + setSugaredLoggerFunc: SetCoreLogger, }, { fileName: GrpcLogFileName, - setSugaredLoggerFunc: logger.SetGrpcLogger, + setSugaredLoggerFunc: SetGrpcLogger, }, } - return createLogger(meta, logDir) + return createLogger(console, meta, logDir) } diff --git a/internal/dflog/logcore/signal.go b/internal/dflog/signal.go similarity index 86% rename from internal/dflog/logcore/signal.go rename to internal/dflog/signal.go index ac57fe6ae..6796cef7c 100644 --- a/internal/dflog/logcore/signal.go +++ b/internal/dflog/signal.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package logcore +package logger import ( "fmt" @@ -24,8 +24,6 @@ import ( "go.uber.org/zap" "go.uber.org/zap/zapcore" - - logger "d7y.io/dragonfly/v2/internal/dflog" ) var ( @@ -48,10 +46,7 @@ func startLoggerSignalHandler() { // use fmt.Printf print change log level event when log level is greater than info level fmt.Printf("change log level to %s\n", level.String()) - logger.Infof("change log level to %s", level.String()) - for _, l := range levels { - l.SetLevel(level) - } + SetLevel(level) } } }() diff --git a/pkg/log/log.go b/pkg/log/log.go index bcfa820d9..3f731a5b0 100644 --- a/pkg/log/log.go +++ b/pkg/log/log.go @@ -19,18 +19,18 @@ package log import ( "go.uber.org/zap/zapcore" - "d7y.io/dragonfly/v2/internal/dflog/logcore" + "d7y.io/dragonfly/v2/internal/dflog" "d7y.io/dragonfly/v2/pkg/dfpath" ) // SetCoreLevel sets core log level, export internal SetCoreLevel for using dragonfly as library func SetCoreLevel(level zapcore.Level) { - logcore.SetCoreLevel(level) + logger.SetCoreLevel(level) } // SetGrpcLevel sets grpc log level, export internal SetGrpcLevel for using dragonfly as library func SetGrpcLevel(level zapcore.Level) { - logcore.SetGrpcLevel(level) + logger.SetGrpcLevel(level) } // SetupDaemon sets daemon log config: path, console @@ -49,5 +49,5 @@ func SetupDaemon(logDir string, console bool) error { return err } - return logcore.InitDaemon(false, d.LogDir()) + return logger.InitDaemon(false, d.LogDir()) }