FTP: enable ftpserverlib logging and make debug mode configurable

This commit is contained in:
Nicola Murino
2021-07-20 17:22:08 +02:00
parent c900cde8e4
commit 5967aa1aa5
10 changed files with 45 additions and 6 deletions

View File

@@ -15,6 +15,7 @@ import (
"path/filepath"
"runtime"
ftpserverlog "github.com/fclairamb/ftpserverlib/log"
"github.com/rs/zerolog"
lumberjack "gopkg.in/natefinch/lumberjack.v2"
)
@@ -60,7 +61,8 @@ func (l *StdLoggerWrapper) Write(p []byte) (n int, err error) {
// LeveledLogger is a logger that accepts a message string and a variadic number of key-value pairs
type LeveledLogger struct {
Sender string
Sender string
additionalKeyVals []interface{}
}
func addKeysAndValues(ev *zerolog.Event, keysAndValues ...interface{}) {
@@ -81,6 +83,9 @@ func addKeysAndValues(ev *zerolog.Event, keysAndValues ...interface{}) {
func (l *LeveledLogger) Error(msg string, keysAndValues ...interface{}) {
ev := logger.Error()
ev.Timestamp().Str("sender", l.Sender)
if len(l.additionalKeyVals) > 0 {
addKeysAndValues(ev, l.additionalKeyVals...)
}
addKeysAndValues(ev, keysAndValues...)
ev.Msg(msg)
}
@@ -89,6 +94,9 @@ func (l *LeveledLogger) Error(msg string, keysAndValues ...interface{}) {
func (l *LeveledLogger) Info(msg string, keysAndValues ...interface{}) {
ev := logger.Info()
ev.Timestamp().Str("sender", l.Sender)
if len(l.additionalKeyVals) > 0 {
addKeysAndValues(ev, l.additionalKeyVals...)
}
addKeysAndValues(ev, keysAndValues...)
ev.Msg(msg)
}
@@ -97,6 +105,9 @@ func (l *LeveledLogger) Info(msg string, keysAndValues ...interface{}) {
func (l *LeveledLogger) Debug(msg string, keysAndValues ...interface{}) {
ev := logger.Debug()
ev.Timestamp().Str("sender", l.Sender)
if len(l.additionalKeyVals) > 0 {
addKeysAndValues(ev, l.additionalKeyVals...)
}
addKeysAndValues(ev, keysAndValues...)
ev.Msg(msg)
}
@@ -105,10 +116,21 @@ func (l *LeveledLogger) Debug(msg string, keysAndValues ...interface{}) {
func (l *LeveledLogger) Warn(msg string, keysAndValues ...interface{}) {
ev := logger.Warn()
ev.Timestamp().Str("sender", l.Sender)
if len(l.additionalKeyVals) > 0 {
addKeysAndValues(ev, l.additionalKeyVals...)
}
addKeysAndValues(ev, keysAndValues...)
ev.Msg(msg)
}
// With returns a LeveledLogger with additional context specific keyvals
func (l *LeveledLogger) With(keysAndValues ...interface{}) ftpserverlog.Logger {
return &LeveledLogger{
Sender: l.Sender,
additionalKeyVals: append(l.additionalKeyVals, keysAndValues...),
}
}
// GetLogger get the configured logger instance
func GetLogger() *zerolog.Logger {
return &logger