Set up structured logging and Lumberjack log rotation

This commit is contained in:
henk
2026-05-15 12:36:30 +02:00
parent e0800a6a6b
commit 1254f70a5f
3 changed files with 39 additions and 1 deletions

2
go.mod
View File

@@ -1,3 +1,5 @@
module git.systemact.nl/henk/mars-terraform-registry module git.systemact.nl/henk/mars-terraform-registry
go 1.26.2 go 1.26.2
require gopkg.in/natefinch/lumberjack.v2 v2.2.1

2
go.sum Normal file
View File

@@ -0,0 +1,2 @@
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=

36
main.go
View File

@@ -1,5 +1,39 @@
package main package main
func main() { import (
"io"
"log/slog"
"os"
"gopkg.in/natefinch/lumberjack.v2"
)
func main() {
logBaseDir, err := os.UserHomeDir()
if err != nil {
panic("Can't determine home directory")
}
logFilePath := logBaseDir + "/.local/share/mars_terraform_registry/logs"
if err := os.MkdirAll(logFilePath, 0755); err != nil {
panic("Can't create log directory")
}
// Create Lumberjack rolling logger (replaces *os.File)
logFile := &lumberjack.Logger{
Filename: logFilePath,
MaxSize: 10, // MB: size at which to rotate
MaxAge: 30, // Days: how long to keep old logs
MaxBackups: 5, // Number of old logs to keep
Compress: true, // .gz compression for old logs
LocalTime: true, // Local time instead of UTC in filenames
}
defer logFile.Close()
multiWriter := io.MultiWriter(os.Stdout, logFile)
logOptions := slog.HandlerOptions{
Level: slog.LevelDebug,
}
slog.SetDefault(slog.New(slog.NewJSONHandler(multiWriter, &logOptions)))
slog.Info("Logging test")
} }