增加了控制台输出控制配置
							parent
							
								
									e7dfeffb3a
								
							
						
					
					
						commit
						b6a3db139b
					
				| 
						 | 
				
			
			@ -1,7 +1,10 @@
 | 
			
		|||
package zaplog
 | 
			
		||||
 | 
			
		||||
// LogLevel 定义日志级别类型
 | 
			
		||||
type LogLevel int8
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	Debug int8 = iota - 1
 | 
			
		||||
	Debug LogLevel = iota - 1
 | 
			
		||||
	Info
 | 
			
		||||
	Warn
 | 
			
		||||
	Error
 | 
			
		||||
| 
						 | 
				
			
			@ -19,25 +22,24 @@ type LogFileConfig struct {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
type Config struct {
 | 
			
		||||
	JsonFormat bool          // 是否使用JSON格式(默认false)
 | 
			
		||||
	Mode       int8          // 日志启用级别(使用上面定义的常量)
 | 
			
		||||
	DebugLog   LogFileConfig // Debug日志配置
 | 
			
		||||
	InfoLog    LogFileConfig // Info日志配置
 | 
			
		||||
	WarnLog    LogFileConfig // Warn日志配置
 | 
			
		||||
	ErrorLog   LogFileConfig // Error日志配置
 | 
			
		||||
	DPanicLog  LogFileConfig // DPanic日志配置
 | 
			
		||||
	PanicLog   LogFileConfig // Panic日志配置
 | 
			
		||||
	FatalLog   LogFileConfig // Fatal日志配置
 | 
			
		||||
	JsonFormat    bool          // 是否使用JSON格式(默认false)
 | 
			
		||||
	DisableStdout bool          // 是否禁用输出到标准输出(默认false)
 | 
			
		||||
	Mode          LogLevel      // 日志启用级别(使用上面定义的常量)
 | 
			
		||||
	DebugLog      LogFileConfig // Debug日志配置
 | 
			
		||||
	InfoLog       LogFileConfig // Info日志配置
 | 
			
		||||
	WarnLog       LogFileConfig // Warn日志配置
 | 
			
		||||
	ErrorLog      LogFileConfig // Error日志配置
 | 
			
		||||
	DPanicLog     LogFileConfig // DPanic日志配置
 | 
			
		||||
	PanicLog      LogFileConfig // Panic日志配置
 | 
			
		||||
	FatalLog      LogFileConfig // Fatal日志配置
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var cfg_default = Config{
 | 
			
		||||
	DebugLog: LogFileConfig{
 | 
			
		||||
		Filename:    "./log/Info",
 | 
			
		||||
		FileSize_MB: 5,
 | 
			
		||||
		FileBackup:  5,
 | 
			
		||||
		FileAge_DAY: 30,
 | 
			
		||||
		Compress:    true,
 | 
			
		||||
	},
 | 
			
		||||
var log_default = LogFileConfig{
 | 
			
		||||
	Filename:    "./log/Info",
 | 
			
		||||
	FileSize_MB: 5,
 | 
			
		||||
	FileBackup:  5,
 | 
			
		||||
	FileAge_DAY: 30,
 | 
			
		||||
	Compress:    true,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 辅助函数:应用默认值
 | 
			
		||||
| 
						 | 
				
			
			@ -61,19 +63,32 @@ func applyDefaults(target, source *LogFileConfig) {
 | 
			
		|||
 | 
			
		||||
func configDefault(config ...Config) Config {
 | 
			
		||||
	if len(config) == 0 {
 | 
			
		||||
		return cfg_default
 | 
			
		||||
		return Config{
 | 
			
		||||
			DebugLog:  log_default,
 | 
			
		||||
			InfoLog:   log_default,
 | 
			
		||||
			WarnLog:   log_default,
 | 
			
		||||
			ErrorLog:  log_default,
 | 
			
		||||
			DPanicLog: log_default,
 | 
			
		||||
			PanicLog:  log_default,
 | 
			
		||||
			FatalLog:  log_default,
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	cfg := config[0]
 | 
			
		||||
 | 
			
		||||
	// 应用默认值
 | 
			
		||||
	if cfg.Mode < Debug || cfg.Mode > Fatal {
 | 
			
		||||
		cfg.Mode = Info
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 为每个日志级别应用默认值
 | 
			
		||||
	applyDefaults(&cfg.DebugLog, &cfg_default.DebugLog)
 | 
			
		||||
	applyDefaults(&cfg.InfoLog, &cfg_default.DebugLog)
 | 
			
		||||
	applyDefaults(&cfg.WarnLog, &cfg_default.DebugLog)
 | 
			
		||||
	applyDefaults(&cfg.ErrorLog, &cfg_default.DebugLog)
 | 
			
		||||
	applyDefaults(&cfg.DPanicLog, &cfg_default.DebugLog)
 | 
			
		||||
	applyDefaults(&cfg.PanicLog, &cfg_default.DebugLog)
 | 
			
		||||
	applyDefaults(&cfg.FatalLog, &cfg_default.DebugLog)
 | 
			
		||||
	applyDefaults(&cfg.DebugLog, &log_default)
 | 
			
		||||
	applyDefaults(&cfg.InfoLog, &log_default)
 | 
			
		||||
	applyDefaults(&cfg.WarnLog, &log_default)
 | 
			
		||||
	applyDefaults(&cfg.ErrorLog, &log_default)
 | 
			
		||||
	applyDefaults(&cfg.DPanicLog, &log_default)
 | 
			
		||||
	applyDefaults(&cfg.PanicLog, &log_default)
 | 
			
		||||
	applyDefaults(&cfg.FatalLog, &log_default)
 | 
			
		||||
 | 
			
		||||
	return cfg
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -77,7 +77,7 @@ func New(config ...Config) *zap.SugaredLogger {
 | 
			
		|||
	// 创建核心的函数
 | 
			
		||||
	createCore := func(level zapcore.Level, logConfig LogFileConfig) zapcore.Core {
 | 
			
		||||
		// 生成缓存键
 | 
			
		||||
		cacheKey := fmt.Sprintf("%s:%d:%d:%d:%v", logConfig.Filename, logConfig.FileSize_MB, logConfig.FileBackup, logConfig.FileAge_DAY, true)
 | 
			
		||||
		cacheKey := fmt.Sprintf("%s:%d:%d:%d:%v", logConfig.Filename, logConfig.FileSize_MB, logConfig.FileBackup, logConfig.FileAge_DAY, logConfig.Compress)
 | 
			
		||||
 | 
			
		||||
		// 获取或创建写入器
 | 
			
		||||
		var ws zapcore.WriteSyncer
 | 
			
		||||
| 
						 | 
				
			
			@ -89,13 +89,17 @@ func New(config ...Config) *zap.SugaredLogger {
 | 
			
		|||
				logConfig.FileSize_MB,
 | 
			
		||||
				logConfig.FileBackup,
 | 
			
		||||
				logConfig.FileAge_DAY,
 | 
			
		||||
				true,
 | 
			
		||||
				logConfig.Compress,
 | 
			
		||||
			)
 | 
			
		||||
			wsCache[cacheKey] = ws
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// 创建多写入器(文件+控制台)
 | 
			
		||||
		multiWs := zapcore.NewMultiWriteSyncer(ws, zapcore.AddSync(os.Stdout))
 | 
			
		||||
		var multiWs zapcore.WriteSyncer
 | 
			
		||||
		if cfg.DisableStdout {
 | 
			
		||||
			multiWs = ws
 | 
			
		||||
		} else {
 | 
			
		||||
			multiWs = zapcore.NewMultiWriteSyncer(ws, zapcore.AddSync(os.Stdout))
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// 创建级别过滤器
 | 
			
		||||
		priority := zap.LevelEnablerFunc(func(lev zapcore.Level) bool {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue