diff --git a/go.mod b/go.mod index 7f61e13..e60b441 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,5 @@ module git.systemact.nl/henk/mars-terraform-registry go 1.26.2 + +require gopkg.in/natefinch/lumberjack.v2 v2.2.1 diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..96b0a10 --- /dev/null +++ b/go.sum @@ -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= diff --git a/main.go b/main.go index 7905807..aa29198 100644 --- a/main.go +++ b/main.go @@ -1,5 +1,39 @@ 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") }