From 93e765f14c6c4a01ac0e7ef56d304e5646f962e9 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 17 May 2023 10:52:12 +0200 Subject: [PATCH] cmd/thalos/main.go: Implement log splitting if file logging is enabled. --- app/log/RotatingFile.go | 8 ++++++-- cmd/thalos/main.go | 27 +++++++++++++++++++-------- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/app/log/RotatingFile.go b/app/log/RotatingFile.go index 7c22c14..4654747 100644 --- a/app/log/RotatingFile.go +++ b/app/log/RotatingFile.go @@ -46,8 +46,12 @@ func NewRotatingFile(filename string, maxSize int64, maxAge time.Duration) (*Rot }, nil } -func NewRotatingFileFromConfig(config Config) (*RotatingFile, error) { - return NewRotatingFile(config.GetFilePath(), int64(config.MaxFileSize), config.MaxTime) +func NewRotatingFileFromConfig(config Config, suffix string) (*RotatingFile, error) { + if len(suffix) > 0 { + suffix = "_" + suffix + } + + return NewRotatingFile(config.GetFilePath()+suffix+".log", int64(config.MaxFileSize), config.MaxTime) } func (w *RotatingFile) newFilename(name string) string { diff --git a/cmd/thalos/main.go b/cmd/thalos/main.go index b74d1e5..5045673 100644 --- a/cmd/thalos/main.go +++ b/cmd/thalos/main.go @@ -3,6 +3,7 @@ package main import ( "context" "fmt" + "io" "os" "os/signal" "path" @@ -190,18 +191,28 @@ func main() { } if len(conf.Log.Filename) > 0 { - writer, err := NewRotatingFileFromConfig(conf.Log) + stdWriter, err := NewRotatingFileFromConfig(conf.Log, "info") if err != nil { - log.WithError(err).Fatal("Failed to open log") + log.WithError(err).Fatal("Failed to open info log") return } + errWriter, err := NewRotatingFileFromConfig(conf.Log, "error") + if err != nil { + log.WithError(err).Fatal("Failed to open error log") + return + } + log.WithFields(log.Fields{ - "maxfilesize": conf.Log.MaxFileSize, - "maxage": conf.Log.MaxTime, - "directory": conf.Log.GetDirectory(), - "filename": conf.Log.GetFilename(), - }).Info("Logging to file: ", conf.Log.GetFilePath()) - log.SetOutput(writer) + "maxfilesize": conf.Log.MaxFileSize, + "maxage": conf.Log.MaxTime, + "directory": conf.Log.GetDirectory(), + "info_filename": stdWriter.GetFilename(), + "error_filename": errWriter.GetFilename(), + }).Info("Logging to file") + + log.SetOutput(io.Discard) + log.AddHook(MakeStdHook(stdWriter)) + log.AddHook(MakeErrorHook(errWriter)) } // Init telegram notification service