Improve logging

This commit is contained in:
2025-09-29 14:16:10 +03:30
parent a99e94a42c
commit ea2bfa436a
2 changed files with 50 additions and 9 deletions

View File

@@ -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}
} }

View File

@@ -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)
} }