Set up structured logging and Lumberjack log rotation
This commit is contained in:
2
go.mod
2
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
|
||||
|
||||
2
go.sum
Normal file
2
go.sum
Normal 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
36
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")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user