mirror of
https://github.com/drakkan/sftpgo.git
synced 2024-11-25 09:00:27 +00:00
improve logger
log file size, rotation policy and compression are now configurable
This commit is contained in:
parent
fab21dcf51
commit
2a8ab620f3
3 changed files with 26 additions and 12 deletions
|
@ -51,6 +51,11 @@ The `sftpgo` executable supports the following command line flags:
|
||||||
|
|
||||||
- `-config-dir` string. Location of the config dir. This directory should contain the `sftpgo.conf` configuration file, the private key for the SFTP server (`id_rsa` file) and the SQLite database if you use SQLite as data provider. The server private key will be autogenerated if the user that executes SFTPGo has write access to the config-dir. The default value is "."
|
- `-config-dir` string. Location of the config dir. This directory should contain the `sftpgo.conf` configuration file, the private key for the SFTP server (`id_rsa` file) and the SQLite database if you use SQLite as data provider. The server private key will be autogenerated if the user that executes SFTPGo has write access to the config-dir. The default value is "."
|
||||||
- `-log-file-path` string. Location for the log file, default "sftpgo.log"
|
- `-log-file-path` string. Location for the log file, default "sftpgo.log"
|
||||||
|
- `-log-max-size` int. Maximum size in megabytes of the log file before it gets rotated. Default 10
|
||||||
|
- `-log-max-backups` int. Maximum number of old log files to retain. Default 5
|
||||||
|
- `-log-max-age` int. Maximum number of days to retain old log files. Default 28
|
||||||
|
- `-log-compress` boolean. Determine if the rotated log files should be compressed using gzip
|
||||||
|
- `-log-verbose` boolean. Enable verbose logs. Default `true`
|
||||||
|
|
||||||
Before starting `sftpgo` a dataprovider must be configured.
|
Before starting `sftpgo` a dataprovider must be configured.
|
||||||
|
|
||||||
|
|
|
@ -30,20 +30,15 @@ func GetLogger() *zerolog.Logger {
|
||||||
return &logger
|
return &logger
|
||||||
}
|
}
|
||||||
|
|
||||||
// InitLogger configures the logger.
|
// InitLogger configures the logger using the given parameters
|
||||||
// It sets the log file path and the log level
|
func InitLogger(logFilePath string, logMaxSize int, logMaxBackups int, logMaxAge int, logCompress bool, level zerolog.Level) {
|
||||||
func InitLogger(logFilePath string, level zerolog.Level) {
|
|
||||||
logMaxSize := 10 // MB
|
|
||||||
logMaxBackups := 5
|
|
||||||
logMaxAge := 28 // days
|
|
||||||
|
|
||||||
zerolog.TimeFieldFormat = dateFormat
|
zerolog.TimeFieldFormat = dateFormat
|
||||||
logger = zerolog.New(&lumberjack.Logger{
|
logger = zerolog.New(&lumberjack.Logger{
|
||||||
Filename: logFilePath,
|
Filename: logFilePath,
|
||||||
MaxSize: logMaxSize,
|
MaxSize: logMaxSize,
|
||||||
MaxBackups: logMaxBackups,
|
MaxBackups: logMaxBackups,
|
||||||
MaxAge: logMaxAge,
|
MaxAge: logMaxAge,
|
||||||
Compress: false,
|
Compress: logCompress,
|
||||||
}).With().Timestamp().Logger().Level(level)
|
}).With().Timestamp().Logger().Level(level)
|
||||||
|
|
||||||
consoleOutput := zerolog.ConsoleWriter{
|
consoleOutput := zerolog.ConsoleWriter{
|
||||||
|
@ -51,7 +46,7 @@ func InitLogger(logFilePath string, level zerolog.Level) {
|
||||||
TimeFormat: dateFormat,
|
TimeFormat: dateFormat,
|
||||||
NoColor: true,
|
NoColor: true,
|
||||||
}
|
}
|
||||||
consoleLogger = zerolog.New(consoleOutput).With().Timestamp().Logger()
|
consoleLogger = zerolog.New(consoleOutput).With().Timestamp().Logger().Level(level)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Debug logs at debug level for the specified sender
|
// Debug logs at debug level for the specified sender
|
||||||
|
|
16
main.go
16
main.go
|
@ -30,15 +30,29 @@ func main() {
|
||||||
var (
|
var (
|
||||||
configDir string
|
configDir string
|
||||||
logFilePath string
|
logFilePath string
|
||||||
|
logMaxSize int
|
||||||
|
logMaxBackups int
|
||||||
|
logMaxAge int
|
||||||
|
logCompress bool
|
||||||
|
logVerbose bool
|
||||||
)
|
)
|
||||||
flag.StringVar(&configDir, "config-dir", ".", "Location for SFTPGo config dir. It must contain sftpgo.conf, "+
|
flag.StringVar(&configDir, "config-dir", ".", "Location for SFTPGo config dir. It must contain sftpgo.conf, "+
|
||||||
"the private key for the SFTP server (id_rsa file) and the SQLite database if you use SQLite as data provider. "+
|
"the private key for the SFTP server (id_rsa file) and the SQLite database if you use SQLite as data provider. "+
|
||||||
"The server private key will be autogenerated if the user that executes SFTPGo has write access to the config-dir")
|
"The server private key will be autogenerated if the user that executes SFTPGo has write access to the config-dir")
|
||||||
flag.StringVar(&logFilePath, "log-file-path", "sftpgo.log", "Location for the log file")
|
flag.StringVar(&logFilePath, "log-file-path", "sftpgo.log", "Location for the log file")
|
||||||
|
flag.IntVar(&logMaxSize, "log-max-size", 10, "Maximum size in megabytes of the log file before it gets rotated.")
|
||||||
|
flag.IntVar(&logMaxBackups, "log-max-backups", 5, "Maximum number of old log files to retain")
|
||||||
|
flag.IntVar(&logMaxAge, "log-max-age", 28, "Maximum number of days to retain old log files")
|
||||||
|
flag.BoolVar(&logCompress, "log-compress", false, "Determine if the rotated log files should be compressed using gzip")
|
||||||
|
flag.BoolVar(&logVerbose, "log-verbose", true, "Enable verbose logs")
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
configFilePath := filepath.Join(configDir, confName)
|
configFilePath := filepath.Join(configDir, confName)
|
||||||
logger.InitLogger(logFilePath, zerolog.DebugLevel)
|
logLevel := zerolog.DebugLevel
|
||||||
|
if !logVerbose {
|
||||||
|
logLevel = zerolog.InfoLevel
|
||||||
|
}
|
||||||
|
logger.InitLogger(logFilePath, logMaxSize, logMaxBackups, logMaxAge, logCompress, logLevel)
|
||||||
logger.Info(logSender, "starting SFTPGo, config dir: %v", configDir)
|
logger.Info(logSender, "starting SFTPGo, config dir: %v", configDir)
|
||||||
config.LoadConfig(configFilePath)
|
config.LoadConfig(configFilePath)
|
||||||
providerConf := config.GetProviderConf()
|
providerConf := config.GetProviderConf()
|
||||||
|
|
Loading…
Reference in a new issue