Files
paralus/pkg/audit/logger.go
2022-04-08 17:42:26 +05:30

35 lines
701 B
Go

package audit
import (
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"gopkg.in/natefinch/lumberjack.v2"
)
// options holds audit options
type AuditOptions struct {
LogPath string
MaxSizeMB int
MaxBackups int
MaxAgeDays int
}
func GetAuditLogger(opts *AuditOptions) *zap.Logger {
encoder := zapcore.EncoderConfig{
TimeKey: "timestamp",
EncodeTime: zapcore.RFC3339NanoTimeEncoder,
}
logger := zap.New(zapcore.NewCore(
zapcore.NewJSONEncoder(encoder),
zapcore.AddSync(&lumberjack.Logger{
Filename: opts.LogPath,
MaxSize: opts.MaxSizeMB, // megabytes
MaxBackups: opts.MaxBackups,
MaxAge: opts.MaxAgeDays, // days
}),
zap.InfoLevel,
))
return logger
}