feat: support change console log level (#1055)
Signed-off-by: Jim Ma <majinjing3@gmail.com>
This commit is contained in:
parent
75ce151d3f
commit
cc5a43c73f
|
|
@ -13,7 +13,6 @@ linters:
|
|||
enable:
|
||||
- gci
|
||||
- gofmt
|
||||
- goimports
|
||||
- golint
|
||||
- misspell
|
||||
- govet
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package logcore
|
||||
package logger
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
|
@ -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())
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue