From c4b4c68394cccb3b997ff9f7f7e9c37f20fc3a5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Mon, 24 Jun 2024 18:08:33 +0800 Subject: [PATCH] update logger --- define.go | 56 +++++++++++++++++++++++++++++++++++++++---------------- logger.go | 22 +++------------------- 2 files changed, 43 insertions(+), 35 deletions(-) diff --git a/define.go b/define.go index 5ea0230..ecb7f04 100644 --- a/define.go +++ b/define.go @@ -8,6 +8,8 @@ package logger import ( + "git.zhangdeman.cn/zhangdeman/consts" + "strings" "time" "go.uber.org/zap" @@ -20,21 +22,21 @@ import ( // // Date : 18:40 2022/6/12 type InputLogConfig struct { - Name string `json:"name" yaml:"name"` // 日志文件名 - Path string `json:"path" yaml:"path"` // 日志文件路径 - TimeIntervalType TimeIntervalType `json:"time_interval_type" yaml:"time_interval_type"` // 日志切割规则 - DivisionChar string `json:"division_char" yaml:"division_char"` // 文件名分隔符 - LogLevel int `json:"log_level" yaml:"log_level"` // 日志等级 - Console bool `json:"console" yaml:"console"` // 是否进行控制台日志输出 - UseJson bool `json:"use_json" yaml:"use_json"` // 日志是否使用JSON格式 - FileLine bool `json:"file_line" yaml:"file_line"` // 日志是否打印行号 - MessageKey string `json:"message_key" yaml:"message_key"` // message 字段 - LevelKey string `json:"level_key" yaml:"level_key"` // level 字段 - TimeKey string `json:"time_key" yaml:"time_key"` // 时间字段 - CallerKey string `json:"caller_key" yaml:"caller_key"` // 记录日志的文件的代码行数 - UseShortFile bool `json:"use_short_file" yaml:"use_short_file"` // 是否使用短文件格式 - CallerSkip int `json:"caller_skip" yaml:"caller_skip"` // 日志记录的文件跳过多少层 - MaxAge int `json:"max_age" yaml:"max_age"` // 日志最长保存时间, 单位 : 秒 + Name string `json:"name" yaml:"name"` // 日志文件名 + Path string `json:"path" yaml:"path"` // 日志文件路径 + TimeIntervalType string `json:"time_interval_type" yaml:"time_interval_type"` // 日志切割规则 + DivisionChar string `json:"division_char" yaml:"division_char"` // 文件名分隔符 + LogLevel string `json:"log_level" yaml:"log_level"` // 日志等级 + Console bool `json:"console" yaml:"console"` // 是否进行控制台日志输出 + UseJson bool `json:"use_json" yaml:"use_json"` // 日志是否使用JSON格式 + FileLine bool `json:"file_line" yaml:"file_line"` // 日志是否打印行号 + MessageKey string `json:"message_key" yaml:"message_key"` // message 字段 + LevelKey string `json:"level_key" yaml:"level_key"` // level 字段 + TimeKey string `json:"time_key" yaml:"time_key"` // 时间字段 + CallerKey string `json:"caller_key" yaml:"caller_key"` // 记录日志的文件的代码行数 + UseShortFile bool `json:"use_short_file" yaml:"use_short_file"` // 是否使用短文件格式 + CallerSkip int `json:"caller_skip" yaml:"caller_skip"` // 日志记录的文件跳过多少层 + MaxAge int `json:"max_age" yaml:"max_age"` // 日志最长保存时间, 单位 : 秒 } // GetLogInstanceFromInputConfig 从输入配置获取日志实例 @@ -69,8 +71,30 @@ func GetLogInstanceFromInputConfig(logConf *InputLogConfig) (*zap.Logger, error) WithMaxAge(time.Duration(logConf.MaxAge)*time.Second)); nil != err { return nil, err } - if loggerInstance, err = NewLogger(zapcore.Level(logConf.LogLevel), splitConfig, logConfList...); nil != err { + if loggerInstance, err = NewLogger(logConf.LogLevel, splitConfig, logConfList...); nil != err { return nil, err } return loggerInstance, nil } + +// inputLevel2ZapLevel 输入日志等级转化为zap日志等级 +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 18:07 2024/6/24 +func inputLevel2ZapLevel(inputLoggerLevel string) zapcore.Level { + loggerLevel := zapcore.DebugLevel + switch strings.ToUpper(inputLoggerLevel) { + case consts.LogLevelDebug: + loggerLevel = zapcore.DebugLevel + case consts.LogLevelInfo: + loggerLevel = zapcore.InfoLevel + case consts.LogLevelWarn: + loggerLevel = zapcore.WarnLevel + case consts.LogLevelError: + loggerLevel = zapcore.ErrorLevel + case consts.LogLevelPanic: + loggerLevel = zapcore.PanicLevel + } + return loggerLevel +} diff --git a/logger.go b/logger.go index 6fc2ef0..d4881fe 100644 --- a/logger.go +++ b/logger.go @@ -8,12 +8,9 @@ package logger import ( - "git.zhangdeman.cn/zhangdeman/consts" + "github.com/pkg/errors" "io" "os" - "strings" - - "github.com/pkg/errors" "go.uber.org/zap" @@ -32,21 +29,8 @@ func NewLogger(inputLoggerLevel string, splitConfig *RotateLogConfig, optionFunc return nil, errors.New("未配置日志切割规则") } - loggerLevel := zapcore.DebugLevel - switch strings.ToUpper(inputLoggerLevel) { - case consts.LogLevelDebug: - loggerLevel = zapcore.DebugLevel - case consts.LogLevelInfo: - loggerLevel = zapcore.InfoLevel - case consts.LogLevelWarn: - loggerLevel = zapcore.WarnLevel - case consts.LogLevelError: - loggerLevel = zapcore.ErrorLevel - case consts.LogLevelPanic: - loggerLevel = zapcore.PanicLevel - default: - return nil, errors.New(inputLoggerLevel + " : input log level is not support") - } + loggerLevel := inputLevel2ZapLevel(inputLoggerLevel) + o := &OptionLogger{} for _, f := range optionFunc {