From 1e0c611290cdeab4cf263de4f62f99dd125ba428 Mon Sep 17 00:00:00 2001 From: Santo Cariotti Date: Tue, 8 Apr 2025 16:03:34 +0200 Subject: Log on file --- .gitignore | 1 + go.mod | 1 + go.sum | 2 ++ internal/network/network.go | 29 +++++++++++++++++++++++++++-- 4 files changed, 31 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 35cce1c..8163593 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ .rahannarc +*.log diff --git a/go.mod b/go.mod index 904a85a..c3ec2c3 100644 --- a/go.mod +++ b/go.mod @@ -13,6 +13,7 @@ require ( go.uber.org/zap v1.27.0 golang.org/x/crypto v0.32.0 golang.org/x/term v0.28.0 + gopkg.in/natefinch/lumberjack.v2 v2.2.1 gorm.io/driver/postgres v1.5.11 gorm.io/gorm v1.25.12 ) diff --git a/go.sum b/go.sum index f7d7423..085824c 100644 --- a/go.sum +++ b/go.sum @@ -99,6 +99,8 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= +gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/internal/network/network.go b/internal/network/network.go index 8283993..efd7dc6 100644 --- a/internal/network/network.go +++ b/internal/network/network.go @@ -9,6 +9,8 @@ import ( "time" "go.uber.org/zap" + "go.uber.org/zap/zapcore" + "gopkg.in/natefinch/lumberjack.v2" ) var logger *zap.Logger @@ -53,13 +55,35 @@ func NewTCPNetwork(localID, localIP string, localPort int) *TCPNetwork { retryDelay: 2 * time.Second, } + n.setupLogger("rahanna-network.log") go n.startServer() - logger, _ = zap.NewProduction() - return n } +func (n *TCPNetwork) setupLogger(logFile string) { + cfg := zap.NewProductionConfig() + cfg.OutputPaths = []string{logFile} + cfg.ErrorOutputPaths = []string{logFile} + + // Configure lumberjack for log rotation + lumberjackLogger := &lumberjack.Logger{ + Filename: logFile, + MaxSize: 100, // megabytes + MaxBackups: 5, + MaxAge: 30, // days + Compress: true, + } + + core := zapcore.NewCore( + zapcore.NewJSONEncoder(cfg.EncoderConfig), + zapcore.AddSync(lumberjackLogger), // Log only to the file via lumberjack + cfg.Level, + ) + + logger = zap.New(core) +} + // Add a new peer connection to the local peer func (n *TCPNetwork) AddPeer(remoteID string, remoteIP string, remotePort int) { go n.retryConnect(remoteID, remoteIP, remotePort) @@ -71,6 +95,7 @@ func (n *TCPNetwork) startServer() { listener, err := net.Listen("tcp", address) if err != nil { logger.Sugar().Errorf("failed to start server: %v", err) + return } n.listener = listener logger.Sugar().Infof("server started on %s\n", address) -- cgit v1.2.3-18-g5258