From 04546ff6469412fac1ec118bb9a3415e6c84c007 Mon Sep 17 00:00:00 2001 From: douxu <921247973@qq.com> Date: Fri, 26 Jul 2024 10:50:40 +0800 Subject: [PATCH] feat:optimize log waring output --- wave_record/comtrade/parse.go | 18 +++++++++++------- wave_record/config/config.go | 7 +++++-- wave_record/config/config.yaml | 2 +- wave_record/constant/errors.go | 7 +++++++ wave_record/constant/time.go | 7 +++++++ wave_record/log/init.go | 8 ++++---- 6 files changed, 35 insertions(+), 14 deletions(-) create mode 100644 wave_record/constant/errors.go create mode 100644 wave_record/constant/time.go diff --git a/wave_record/comtrade/parse.go b/wave_record/comtrade/parse.go index 408821d..f73a2eb 100644 --- a/wave_record/comtrade/parse.go +++ b/wave_record/comtrade/parse.go @@ -74,10 +74,12 @@ func ParseComtradeFile(ctx context.Context, monitorDir string, dbName string, ad } err := processComtradeFile(ctx, addFilePath, monitorDir, dbName, comtradeMap, addChan, delChan, pool, logger) - if errors.Is(err, nil) { - // TODO 写log error报警 + if err != nil { + if errors.Is(err, constant.ErrNotFindDatFile) { + logger.Info("process comtrade file failed", zap.Error(err)) + continue + } logger.Error("process comtrade file failed", zap.Error(err)) - continue } } } @@ -94,13 +96,13 @@ func processComtradeFile(ctx context.Context, addFilePath string, monitorDir str err := processConfigFile(ctx, dbName, addFilePath, delChan, comtradeMap, pool) if err != nil { // TODO 对error进行嵌套返回 - return fmt.Errorf("%w", err) + return fmt.Errorf("process comtrade failed:%w", err) } case constant.DataFileSuffix: err := processDataFile(monitorDir, fileName, addFilePath, comtradeMap, addChan, logger) if err != nil { // TODO 对error进行嵌套返回 - return fmt.Errorf("%w", err) + return fmt.Errorf("process comtrade failed:%w", err) } default: logger.Warn("no support file style", zap.String("file_style", fileExtension)) @@ -113,7 +115,8 @@ func processConfigFile(ctx context.Context, dbName string, configFilePath string dataFilePath, exist := comtradeMap.Load(configFilePath) if exist { if dataFilePath == "" { - return errors.New("can not find dat file in map") + fmt.Println(11111) + return constant.ErrNotFindDatFile } pool.Invoke(config.ComtradeDataStorageConfig{ @@ -126,7 +129,8 @@ func processConfigFile(ctx context.Context, dbName string, configFilePath string return nil } comtradeMap.Store(configFilePath, "") - return nil + fmt.Println(22222) + return constant.ErrNotFindDatFile } func processDataFile(monitorDir string, fileName string, dataFilePath string, comtradeMap *sync.Map, addChan chan string, logger *zap.Logger) error { diff --git a/wave_record/config/config.go b/wave_record/config/config.go index 23bde0d..f7d42d9 100644 --- a/wave_record/config/config.go +++ b/wave_record/config/config.go @@ -3,8 +3,11 @@ package config import ( "context" + "fmt" "strings" + "time" + "wave_record/constant" "wave_record/log" "github.com/spf13/viper" @@ -17,7 +20,7 @@ type WaveRecordConfig struct { ParseConcurrentQuantity int // parse comtrade file concurrent quantity MongoDBURI string MongoDBDataBase string - LCfg log.LogConfig // log config + LCfg log.CutLogConfig // log config } // ComtradeDataStorageConfig define config struct of storage comtrade data @@ -51,7 +54,7 @@ func ReadAndInitConfig(configDir, configName, configType string) (waveRecordConf waveRecordConfig.MongoDBDataBase = config.GetString("mongodb_database") // init zap log config from config.yaml waveRecordConfig.LCfg.Level = config.GetString("log_level") - waveRecordConfig.LCfg.FileName = config.GetString("log_filename") + waveRecordConfig.LCfg.FileName = fmt.Sprintf(config.GetString("log_filepath"), time.Now().Format(constant.LogTimeFormate)) waveRecordConfig.LCfg.MaxSize = config.GetInt("log_maxsize") waveRecordConfig.LCfg.MaxBackups = config.GetInt("log_maxbackups") waveRecordConfig.LCfg.MaxAge = config.GetInt("log_maxage") diff --git a/wave_record/config/config.yaml b/wave_record/config/config.yaml index 9bb576b..a14161e 100644 --- a/wave_record/config/config.yaml +++ b/wave_record/config/config.yaml @@ -6,7 +6,7 @@ mongodb_port: "27017" mongodb_database: "wave_record" log_level: "debug" -log_filename: "/home/douxu/log/wave_record.log" +log_filepath: "/home/douxu/log/wave_record-%s.log" log_maxsize: 1 log_maxbackups: 5 log_maxage: 30 diff --git a/wave_record/constant/errors.go b/wave_record/constant/errors.go new file mode 100644 index 0000000..c983ce8 --- /dev/null +++ b/wave_record/constant/errors.go @@ -0,0 +1,7 @@ +// Package constant define constant value +package constant + +import "errors" + +// ErrNotFindDatFile define error for not find comtrade data file +var ErrNotFindDatFile = errors.New("can not find dat file in map") diff --git a/wave_record/constant/time.go b/wave_record/constant/time.go new file mode 100644 index 0000000..d15410a --- /dev/null +++ b/wave_record/constant/time.go @@ -0,0 +1,7 @@ +// Package constant define constant value +package constant + +const ( + // LogTimeFormate define time format for log file name + LogTimeFormate = "2006-01-02 15-04-05" +) diff --git a/wave_record/log/init.go b/wave_record/log/init.go index 6c5ea45..5f9a8f5 100644 --- a/wave_record/log/init.go +++ b/wave_record/log/init.go @@ -15,8 +15,8 @@ var ( once sync.Once ) -// LogConfig define log config of wave record project -type LogConfig struct { +// CutLogConfig define log config of wave record project +type CutLogConfig struct { Level string `json:"level"` // Level 最低日志等级,DEBUG收集INFO等级以上的日志 FileName string `json:"file_name"` // FileName 日志文件位置 MaxSize int `json:"max_size"` // MaxSize 进行切割之前,日志文件的最大大小(MB为单位)默认为100MB @@ -51,7 +51,7 @@ func getLogWriter(filename string, maxsize, maxBackup, maxAge int) zapcore.Write } // initLogger return successfully initialized zap logger -func initLogger(lCfg LogConfig) *zap.Logger { +func initLogger(lCfg CutLogConfig) *zap.Logger { writeSyncer := getLogWriter(lCfg.FileName, lCfg.MaxSize, lCfg.MaxBackups, lCfg.MaxAge) encoder := getEncoder() @@ -69,7 +69,7 @@ func initLogger(lCfg LogConfig) *zap.Logger { } // GetLoggerInstance return instance of zap logger -func GetLoggerInstance(lCfg LogConfig) *zap.Logger { +func GetLoggerInstance(lCfg CutLogConfig) *zap.Logger { once.Do(func() { logger = initLogger(lCfg) })