From d597b8045306dac4cb32cdb4b1992c88f3f455de Mon Sep 17 00:00:00 2001 From: hujiebin Date: Sat, 29 Jul 2023 09:53:44 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E9=9C=80=E8=A6=81=E6=89=8B=E5=8A=A8?= =?UTF-8?q?=E5=BC=80=E5=90=AFredis=E7=9A=84hook?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mylogrus/log.go | 33 +++++++++++++++++++++++++++++++++ resource/redisCli/redis.go | 8 ++++++-- resource/redisCli/redis_hook.go | 2 +- 3 files changed, 40 insertions(+), 3 deletions(-) diff --git a/mylogrus/log.go b/mylogrus/log.go index c647383..ae97a99 100644 --- a/mylogrus/log.go +++ b/mylogrus/log.go @@ -14,6 +14,7 @@ const logDir = "/var/log/hilo/" var filenamePrefix string var MyLog = logrus.New() +var RedisLog = logrus.New() func Info(v interface{}) { MyLog.Info("") @@ -44,6 +45,23 @@ func init() { MyLog.SetReportCaller(true) } +func InitRedisLog() { + RedisLog.SetOutput(os.Stdout) + + RedisLog.SetFormatter(&logrus.TextFormatter{ + ForceQuote: false, + DisableQuote: true, + TimestampFormat: "2006-01-02 15:04:05.000", + FullTimestamp: true, + }) + hook := lfshook.NewHook(lfshook.WriterMap{ + logrus.InfoLevel: GetRedisLog(), + }, &logrus.TextFormatter{ForceQuote: false, DisableQuote: true, TimestampFormat: time.RFC3339Nano}) + RedisLog.AddHook(hook) + RedisLog.SetLevel(logrus.InfoLevel) + RedisLog.SetReportCaller(true) +} + func GetInfoLog() io.Writer { return getLevelWrite(logrus.InfoLevel) } @@ -91,3 +109,18 @@ func GetSqlLog() io.Writer { } return writer } + +func GetRedisLog() io.Writer { + var name string = "redis.log" + name = filenamePrefix + name + writer, err := rotatelogs.New( + name+".%Y%m%d%H", + rotatelogs.WithLinkName(name), // 生成软链,指向最新日志文件 + rotatelogs.WithMaxAge(7*24*time.Hour), // 文件最大保存时间 + rotatelogs.WithRotationTime(time.Hour), // 日志切割时间间隔 + ) + if err != nil { + MyLog.Fatal("Failed to create log file:", err.Error()) + } + return writer +} diff --git a/resource/redisCli/redis.go b/resource/redisCli/redis.go index da6084f..f6d5a1c 100644 --- a/resource/redisCli/redis.go +++ b/resource/redisCli/redis.go @@ -26,10 +26,14 @@ func init() { } else { mylogrus.MyLog.Info("redis db0 connection success - ", pong) } - // log hook - RedisClient.AddHook(redisHook{}) } func GetRedis() *redis.Client { return RedisClient } + +func AddRedisHook() { + // log hook + RedisClient.AddHook(redisHook{}) + mylogrus.InitRedisLog() +} diff --git a/resource/redisCli/redis_hook.go b/resource/redisCli/redis_hook.go index 6d59dad..09f24d3 100644 --- a/resource/redisCli/redis_hook.go +++ b/resource/redisCli/redis_hook.go @@ -25,7 +25,7 @@ func (redisHook) AfterProcess(ctx context.Context, cmd redis.Cmder) error { if s, ok := start.(time.Time); ok { cost = time.Now().Sub(s).Milliseconds() } - mylogrus.MyLog.Infof("redis cmd: <%s>,err:%v traceId:%v,userId:%v,cost:%v ms", cmd.String(), cmd.Err(), traceId, userId, cost) + mylogrus.RedisLog.Infof("redis cmd: <%s>,err:%v traceId:%v,userId:%v,cost:%v ms", cmd.String(), cmd.Err(), traceId, userId, cost) return nil } -- 2.22.0