Files
locust-operator/cmd/logging.go
Chris Richardson 1020814623
Some checks failed
Tests / Run on Ubuntu (push) Successful in 1m20s
Lint / Run on Ubuntu (push) Failing after 3m39s
comment out
2025-07-02 21:42:55 -04:00

44 lines
1.1 KiB
Go

package main
import (
"log"
"os"
"github.com/go-logr/logr"
"github.com/go-logr/zapr"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"gopkg.in/natefinch/lumberjack.v2"
)
// CreateFileLogger Create a logger that will write to console, and file along with log rotation
func CreateFileLogger(fileName string, logLevel zapcore.LevelEnabler) logr.Logger {
// Create file with desired permissions
file, err := os.OpenFile(fileName, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
log.Fatal(err)
}
defer file.Close()
config := zap.NewProductionEncoderConfig()
config.EncodeTime = zapcore.ISO8601TimeEncoder
fileEncoder := zapcore.NewJSONEncoder(config)
consoleEncoder := zapcore.NewConsoleEncoder(config)
writer := zapcore.AddSync(&lumberjack.Logger{
Filename: fileName,
MaxSize: 1000, // MB
MaxBackups: 3,
MaxAge: 90, // days
Compress: false,
})
core := zapcore.NewTee(
zapcore.NewCore(fileEncoder, writer, logLevel),
zapcore.NewCore(consoleEncoder, zapcore.AddSync(os.Stdout), logLevel),
)
logger := zap.New(core, zap.AddCaller(), zap.AddStacktrace(zapcore.ErrorLevel))
return zapr.NewLogger(logger)
}