package log
import (
"time"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
type StandardLogger interface {
Debug (args ...interface {})
Debugf (format string , args ...interface {})
Error (args ...interface {})
Errorf (format string , args ...interface {})
Fatal (args ...interface {})
Fatalf (format string , args ...interface {})
Info (args ...interface {})
Infof (format string , args ...interface {})
Panic (args ...interface {})
Panicf (format string , args ...interface {})
Warn (args ...interface {})
Warnf (format string , args ...interface {})
}
type EventLogger interface {
StandardLogger
}
func Logger (system string ) *ZapEventLogger {
if len (system ) == 0 {
setuplog := getLogger ("setup-logger" )
setuplog .Error ("Missing name parameter" )
system = "undefined"
}
logger := getLogger (system )
skipLogger := logger .Desugar ().WithOptions (zap .AddCallerSkip (1 )).Sugar ()
return &ZapEventLogger {
system : system ,
SugaredLogger : *logger ,
skipLogger : *skipLogger ,
}
}
type ZapEventLogger struct {
zap .SugaredLogger
skipLogger zap .SugaredLogger
system string
}
func (logger *ZapEventLogger ) Warning (args ...interface {}) {
logger .skipLogger .Warn (args ...)
}
func (logger *ZapEventLogger ) Warningf (format string , args ...interface {}) {
logger .skipLogger .Warnf (format , args ...)
}
func FormatRFC3339 (t time .Time ) string {
return t .UTC ().Format (time .RFC3339Nano )
}
func WithStacktrace (l *ZapEventLogger , level LogLevel ) *ZapEventLogger {
copyLogger := *l
copyLogger .SugaredLogger = *copyLogger .SugaredLogger .Desugar ().
WithOptions (zap .AddStacktrace (zapcore .Level (level ))).Sugar ()
copyLogger .skipLogger = *copyLogger .SugaredLogger .Desugar ().WithOptions (zap .AddCallerSkip (1 )).Sugar ()
return ©Logger
}
func WithSkip (l *ZapEventLogger , skip int ) *ZapEventLogger {
copyLogger := *l
copyLogger .SugaredLogger = *copyLogger .SugaredLogger .Desugar ().
WithOptions (zap .AddCallerSkip (skip )).Sugar ()
copyLogger .skipLogger = *copyLogger .SugaredLogger .Desugar ().WithOptions (zap .AddCallerSkip (1 )).Sugar ()
return ©Logger
}
The pages are generated with Golds v0.8.2 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds .