Skip to content

Commit

Permalink
[misc] Support configurable max log size with var NB_LOG_MAX_SIZE_MB (#…
Browse files Browse the repository at this point in the history
…2592)

* Support configurable max log size with var NB_LOG_MAX_SIZE_MB

* add better logs
  • Loading branch information
mlsmaycon authored Sep 12, 2024
1 parent ab892b8 commit f6d57e7
Showing 1 changed file with 21 additions and 2 deletions.
23 changes: 21 additions & 2 deletions util/log.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,27 +5,31 @@ import (
"os"
"path/filepath"
"slices"
"strconv"

log "github.com/sirupsen/logrus"
"gopkg.in/natefinch/lumberjack.v2"

"github.com/netbirdio/netbird/formatter"
)

const defaultLogSize = 5

// InitLog parses and sets log-level input
func InitLog(logLevel string, logPath string) error {
level, err := log.ParseLevel(logLevel)
if err != nil {
log.Errorf("Failed parsing log-level %s: %s", logLevel, err)
return err
}
customOutputs := []string{"console", "syslog"};
customOutputs := []string{"console", "syslog"}

if logPath != "" && !slices.Contains(customOutputs, logPath) {
maxLogSize := getLogMaxSize()
lumberjackLogger := &lumberjack.Logger{
// Log file absolute path, os agnostic
Filename: filepath.ToSlash(logPath),
MaxSize: 5, // MB
MaxSize: maxLogSize, // MB
MaxBackups: 10,
MaxAge: 30, // days
Compress: true,
Expand All @@ -46,3 +50,18 @@ func InitLog(logLevel string, logPath string) error {
log.SetLevel(level)
return nil
}

func getLogMaxSize() int {
if sizeVar, ok := os.LookupEnv("NB_LOG_MAX_SIZE_MB"); ok {
size, err := strconv.ParseInt(sizeVar, 10, 64)
if err != nil {
log.Errorf("Failed parsing log-size %s: %s. Should be just an integer", sizeVar, err)
return defaultLogSize
}

log.Infof("Setting log file max size to %d MB", size)

return int(size)
}
return defaultLogSize
}

0 comments on commit f6d57e7

Please sign in to comment.