Improve logging
This commit is contained in:
		@@ -1,12 +1,15 @@
 | 
				
			|||||||
package main
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"os"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"MQTTLogger/config"
 | 
						"MQTTLogger/config"
 | 
				
			||||||
	"MQTTLogger/internal/csv"
 | 
						"MQTTLogger/internal/csv"
 | 
				
			||||||
	"MQTTLogger/internal/mqtt"
 | 
						"MQTTLogger/internal/mqtt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"go.uber.org/fx"
 | 
						"go.uber.org/fx"
 | 
				
			||||||
	"go.uber.org/zap"
 | 
						"go.uber.org/zap"
 | 
				
			||||||
 | 
						"go.uber.org/zap/zapcore"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func main() {
 | 
					func main() {
 | 
				
			||||||
@@ -27,7 +30,21 @@ func main() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewLogger() (*zap.Logger, error) {
 | 
					func NewLogger() (*zap.Logger, error) {
 | 
				
			||||||
	return zap.NewDevelopment()
 | 
						logLevel := os.Getenv("LOG_LEVEL")
 | 
				
			||||||
 | 
						if logLevel == "" {
 | 
				
			||||||
 | 
							logLevel = "info"
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var level zapcore.Level
 | 
				
			||||||
 | 
						err := level.Set(logLevel)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							level = zapcore.InfoLevel
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						config := zap.NewDevelopmentConfig()
 | 
				
			||||||
 | 
						config.Level = zap.NewAtomicLevelAt(level)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return config.Build()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Simple logger for fx
 | 
					// Simple logger for fx
 | 
				
			||||||
@@ -36,7 +53,21 @@ type FXLogger struct {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewFXLogger() *FXLogger {
 | 
					func NewFXLogger() *FXLogger {
 | 
				
			||||||
	logger, _ := zap.NewDevelopment()
 | 
						logLevel := os.Getenv("LOG_LEVEL")
 | 
				
			||||||
 | 
						if logLevel == "" {
 | 
				
			||||||
 | 
							logLevel = "info"
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var level zapcore.Level
 | 
				
			||||||
 | 
						err := level.Set(logLevel)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							level = zapcore.InfoLevel
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						config := zap.NewDevelopmentConfig()
 | 
				
			||||||
 | 
						config.Level = zap.NewAtomicLevelAt(level)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						logger, _ := config.Build()
 | 
				
			||||||
	return &FXLogger{logger: logger}
 | 
						return &FXLogger{logger: logger}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,17 +8,27 @@ import (
 | 
				
			|||||||
	"go.uber.org/zap"
 | 
						"go.uber.org/zap"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ZapWriter struct {
 | 
					type DebugWriter struct {
 | 
				
			||||||
    sugar *zap.SugaredLogger
 | 
					    logger *zap.Logger
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (z *ZapWriter) Write(p []byte) (n int, err error) {
 | 
					func (d *DebugWriter) Write(p []byte) (n int, err error) {
 | 
				
			||||||
    z.sugar.Debug(strings.TrimSpace(string(p)))
 | 
					    message := strings.TrimSpace(string(p))
 | 
				
			||||||
 | 
					    d.logger.Debug(message, zap.String("source", "mqtt-debug"))
 | 
				
			||||||
 | 
					    return len(p), nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type ErrorWriter struct {
 | 
				
			||||||
 | 
					    logger *zap.Logger
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (e *ErrorWriter) Write(p []byte) (n int, err error) {
 | 
				
			||||||
 | 
					    message := strings.TrimSpace(string(p))
 | 
				
			||||||
 | 
					    e.logger.Error(message, zap.String("source", "mqtt-error"))
 | 
				
			||||||
    return len(p), nil
 | 
					    return len(p), nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func SetupMQTTLogging(logger *zap.Logger) {
 | 
					func SetupMQTTLogging(logger *zap.Logger) {
 | 
				
			||||||
    sugar := logger.Sugar()
 | 
					    mqtt.DEBUG = log.New(&DebugWriter{logger: logger}, "[MQTT] ", 0)
 | 
				
			||||||
    mqtt.DEBUG = log.New(&ZapWriter{sugar: sugar}, "[DEBUG] ", 0)
 | 
					    mqtt.ERROR = log.New(&ErrorWriter{logger: logger}, "[MQTT] ", 0)
 | 
				
			||||||
    mqtt.ERROR = log.New(&ZapWriter{sugar: sugar}, "[ERROR] ", 0)
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user