diff --git a/.version b/.version index a602fc9e..b0bb8785 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -0.9.4 +0.9.5 diff --git a/framework/log/log.go b/framework/log/log.go index 3ad291a6..f17a6a0e 100644 --- a/framework/log/log.go +++ b/framework/log/log.go @@ -205,6 +205,15 @@ func (l *Logger) Write(s []byte) (int, error) { return len(s), nil } +// Close closes underlying output in Out. +func (l *Logger) Close() error { + if l.Out == nil { + return nil + } + + return l.Out.Close() +} + // DebugWriter returns a writer that will act like Logger.Write // but will use debug flag on messages. If Logger.Debug is false, // Write method of returned object will be no-op. @@ -242,6 +251,21 @@ func (l *Logger) log(debug bool, s string) { // Logging is disabled - do nothing. } +func (l *Logger) logNameOverwrite(loggerName string, debug bool, s string) { + if loggerName == "" { + loggerName = l.Name + } + if loggerName != "" { + s = loggerName + ": " + s + } + + out := l.output() + out.Write(time.Now(), debug, s) + + // Logging is disabled - do nothing. +} + + func (l *Logger) Sublogger(name string) *Logger { if l.Name != "" && name != "" { name = l.Name + "/" + name diff --git a/framework/log/zap.go b/framework/log/zap.go index 893bf484..4dff1510 100644 --- a/framework/log/zap.go +++ b/framework/log/zap.go @@ -46,9 +46,14 @@ func (l zapLogger) Write(entry zapcore.Entry, fields []zapcore.Field) error { f.AddTo(enc) } if entry.LoggerName != "" { - l.L.Name += "/" + entry.LoggerName + l.L.logNameOverwrite( + l.L.Name+"/"+entry.LoggerName, + entry.Level == zapcore.DebugLevel, + l.L.formatMsg(entry.Message, enc.Fields), + ) + } else { + l.L.log(entry.Level == zapcore.DebugLevel, l.L.formatMsg(entry.Message, enc.Fields)) } - l.L.log(entry.Level == zapcore.DebugLevel, l.L.formatMsg(entry.Message, enc.Fields)) return nil } diff --git a/maddy.go b/maddy.go index c3a560bc..ba115649 100644 --- a/maddy.go +++ b/maddy.go @@ -450,7 +450,7 @@ func moduleMain(configPath string) error { c.DefaultLogger.Msg("server stopped") if c.DefaultLogger.Out != nil { - if err := c.DefaultLogger.Out.Close(); err != nil { + if err := c.DefaultLogger.Close(); err != nil { log.DefaultLogger.Error("failed to close output logger", err) } } @@ -517,11 +517,11 @@ func moduleReload(oldContainer *container.C, configPath string, asyncStopWg *syn oldContainer.DefaultLogger.Error("moduleStop failed", err) } oldContainer.DefaultLogger.Msg("old server stopped") - if err := oldContainer.DefaultLogger.Out.Close(); err != nil { + if err := oldContainer.DefaultLogger.Close(); err != nil { newContainer.DefaultLogger.Error("failed to close old server log", err) } - systemdStatus(SDReloading, "Configuration running.") + systemdStatus(SDReady, "Configuration running.") }() return newContainer