From 04b5611e13ee795db51fa4f902032208cf5f4769 Mon Sep 17 00:00:00 2001 From: Vajahat Kareem <vajahatk@dotpe.in> Date: Thu, 25 May 2023 13:26:13 +0530 Subject: [PATCH] using custome level at all places --- clients/mysql/db.go | 2 +- logging/default.logger.go | 2 +- logging/interface.go | 2 +- logging/level.go | 9 +++++++-- logging/logger.go | 20 ++++++++++---------- logging/logger_test.go | 7 +++---- logging/metrics.go | 5 ++--- middleware/gin/panic.go | 4 ++-- 8 files changed, 27 insertions(+), 24 deletions(-) diff --git a/clients/mysql/db.go b/clients/mysql/db.go index 594090e..e07f4c8 100644 --- a/clients/mysql/db.go +++ b/clients/mysql/db.go @@ -85,5 +85,5 @@ func WriteDBError(ctx context.Context, logger logging.IDotpeLogger, err error, d "error": error.Error(err), "repository": db, "error-type": etype, - }, logrus.ErrorLevel, "MySQLError") + }, logging.ErrorLevel, "MySQLError") } diff --git a/logging/default.logger.go b/logging/default.logger.go index baedaf2..d10989e 100644 --- a/logging/default.logger.go +++ b/logging/default.logger.go @@ -9,6 +9,6 @@ import ( type emptyLogger struct{} -func (el *emptyLogger) WriteLogs(context.Context, logrus.Fields, logrus.Level, string) {} +func (el *emptyLogger) WriteLogs(context.Context, logrus.Fields, Level, string) {} func (el *emptyLogger) Gin() gin.HandlerFunc { return func(c *gin.Context) {} } diff --git a/logging/interface.go b/logging/interface.go index 9b5ef59..58ca8b5 100644 --- a/logging/interface.go +++ b/logging/interface.go @@ -8,7 +8,7 @@ import ( ) type ILogWriter interface { - WriteLogs(context.Context, logrus.Fields, logrus.Level, string) + WriteLogs(context.Context, logrus.Fields, Level, string) } // ILogger ... diff --git a/logging/level.go b/logging/level.go index 1f356e7..5ab53ea 100644 --- a/logging/level.go +++ b/logging/level.go @@ -1,8 +1,11 @@ package logging -import "go.uber.org/zap" +import ( + "go.uber.org/zap" + "go.uber.org/zap/zapcore" +) -type Level int8 +type Level zapcore.Level const ( PanicLevel Level = Level(zap.PanicLevel) @@ -13,3 +16,5 @@ const ( DebugLevel Level = Level(zap.DebugLevel) DPanicLevel Level = Level(zap.DPanicLevel) ) + +func (l Level) String() string { return zapcore.Level(l).String() } diff --git a/logging/logger.go b/logging/logger.go index b08edda..7e2ccd1 100644 --- a/logging/logger.go +++ b/logging/logger.go @@ -29,7 +29,7 @@ type dlogger struct { accopts []accessLogOption loptions []logOption - metricCollectionLevel logrus.Level + metricCollectionLevel Level collector *prometheus.CounterVec } @@ -81,7 +81,7 @@ func (dlogger *dlogger) finalizeEssentials() error { } // WriteLogs writes log -func (dLogger *dlogger) WriteLogs(ctx context.Context, fields logrus.Fields, cb logrus.Level, MessageKey string) { +func (dLogger *dlogger) WriteLogs(ctx context.Context, fields logrus.Fields, cb Level, MessageKey string) { if ctx == nil { return } @@ -112,10 +112,10 @@ func (dLogger *dlogger) WriteLogs(ctx context.Context, fields logrus.Fields, cb fields[idx] = string(tmp) } } - dLogger.Write(fields, zapcore.Level(cb), MessageKey) + dLogger.Write(fields, cb, MessageKey) } -func (dLogger *dlogger) Write(fields logrus.Fields, cb zapcore.Level, MessageKey string) { +func (dLogger *dlogger) Write(fields logrus.Fields, cb Level, MessageKey string) { zlevel := zapcore.Level(cb) zfields := dLogger.enzap(fields) entry := dLogger.zap.Check(zlevel, MessageKey) @@ -142,12 +142,12 @@ func (dLogger *dlogger) Gin() gin.HandlerFunc { start := time.Now() var fields = logrus.Fields{} dLogger.safeRunAccessLogOptions(c, fields) - var level = new(logrus.Level) - *level = logrus.InfoLevel + var level Level + level = InfoLevel //deferred request log fields["time"] = start - defer dLogger.WriteLogs(c, fields, *level, "access-log") + defer dLogger.WriteLogs(c, fields, level, "access-log") fields["request-statusCode"] = 0 c.Next() @@ -164,11 +164,11 @@ func (dLogger *dlogger) Gin() gin.HandlerFunc { if len(c.Errors) > 0 { fields["error"] = c.Errors.ByType(gin.ErrorTypePrivate).String() - *level = logrus.ErrorLevel + level = ErrorLevel } else if code > 499 { - *level = logrus.ErrorLevel + level = ErrorLevel } else if code > 399 { - *level = logrus.WarnLevel + level = WarnLevel } } } diff --git a/logging/logger_test.go b/logging/logger_test.go index aaa7be5..22d1495 100644 --- a/logging/logger_test.go +++ b/logging/logger_test.go @@ -5,7 +5,6 @@ import ( "testing" "github.com/sirupsen/logrus" - "go.uber.org/zap/zapcore" ) func Test_dlogger_Write(t *testing.T) { @@ -13,7 +12,7 @@ func Test_dlogger_Write(t *testing.T) { fmt.Println(logger) type args struct { fields logrus.Fields - cb zapcore.Level + cb Level MessageKey string } tests := []struct { @@ -24,14 +23,14 @@ func Test_dlogger_Write(t *testing.T) { name: "test", args: args{ fields: logrus.Fields{"test-field-1": "test-field-value-1"}, - cb: zapcore.InfoLevel, + cb: InfoLevel, MessageKey: "testing", }, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - logger.Write(tt.args.fields, zapcore.Level(tt.args.cb), tt.args.MessageKey) + logger.Write(tt.args.fields, tt.args.cb, tt.args.MessageKey) }) } } diff --git a/logging/metrics.go b/logging/metrics.go index 78494d8..d395746 100644 --- a/logging/metrics.go +++ b/logging/metrics.go @@ -5,10 +5,9 @@ import ( "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promauto" - "github.com/sirupsen/logrus" ) -func WithMetric(level logrus.Level) Option { +func WithMetric(level Level) Option { return func(dlogger *dlogger) { dlogger.collector = promauto.NewCounterVec(prometheus.CounterOpts{ Name: "counter", @@ -21,7 +20,7 @@ func WithMetric(level logrus.Level) Option { } } -func (dlogger *dlogger) addMetrics(level logrus.Level, msg, caller string) { +func (dlogger *dlogger) addMetrics(level Level, msg, caller string) { if dlogger.collector != nil && level < dlogger.metricCollectionLevel { parts := strings.Split(caller, "/") parts = parts[len(parts)-3:] diff --git a/middleware/gin/panic.go b/middleware/gin/panic.go index 0e4b85f..d90ae79 100644 --- a/middleware/gin/panic.go +++ b/middleware/gin/panic.go @@ -25,12 +25,12 @@ func Recovery(l logging.ILogWriter) gin.HandlerFunc { if strings.Contains(strings.ToLower(se.Error()), "broken pipe") || strings.Contains(strings.ToLower(se.Error()), "connection reset by peer") { c.Error(err.(error)) // nolint: errcheck c.Abort() - l.WriteLogs(c, logrus.Fields{"stacktrace": stack}, logrus.TraceLevel, "BrokenPipe") + l.WriteLogs(c, logrus.Fields{"stacktrace": stack}, logging.FatalLevel, "BrokenPipe") return } } } - l.WriteLogs(c, logrus.Fields{"stacktrace": stack}, logrus.FatalLevel, "Panic") + l.WriteLogs(c, logrus.Fields{"stacktrace": stack}, logging.FatalLevel, "Panic") c.JSON(http.StatusExpectationFailed, map[string]interface{}{ "message": "something went wrong", "status": false, -- GitLab