diff --git a/config.go b/config.go index bae90c5..ff8cd24 100644 --- a/config.go +++ b/config.go @@ -36,6 +36,9 @@ type FileLogConfig struct { MaxDays int `toml:"max-days" json:"max-days"` // Maximum number of old log files to retain. MaxBackups int `toml:"max-backups" json:"max-backups"` + // Compress function for rotated files. + // Currently only `gzip` and empty are supported, empty means compression disabled. + Compress string `toml:"compress" json:"compress"` } // Config serializes log related config in toml/json. diff --git a/log.go b/log.go index 2ef1c95..5d9a8cd 100644 --- a/log.go +++ b/log.go @@ -141,6 +141,16 @@ func initFileLog(cfg *FileLogConfig) (*lumberjack.Logger, error) { cfg.MaxSize = defaultLogMaxSize } + compress := false + switch cfg.Compress { + case "": + compress = false + case "gzip": + compress = true + default: + return nil, fmt.Errorf("can't set compress to `%s`", cfg.Compress) + } + // use lumberjack to logrotate return &lumberjack.Logger{ Filename: logPath, @@ -148,6 +158,7 @@ func initFileLog(cfg *FileLogConfig) (*lumberjack.Logger, error) { MaxBackups: cfg.MaxBackups, MaxAge: cfg.MaxDays, LocalTime: true, + Compress: compress, }, nil }