summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSanto Cariotti <santo@dcariotti.me>2025-04-08 16:03:34 +0200
committerSanto Cariotti <santo@dcariotti.me>2025-04-08 16:03:34 +0200
commit1e0c611290cdeab4cf263de4f62f99dd125ba428 (patch)
treef03ad437cbc51070a08ef5f1596136cf353dfab6
parent1f0d9ec8452f15c27cd33c4e3874454c35993743 (diff)
Log on file
-rw-r--r--.gitignore1
-rw-r--r--go.mod1
-rw-r--r--go.sum2
-rw-r--r--internal/network/network.go29
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)