diff options
Diffstat (limited to 'log/logger.go')
-rw-r--r-- | log/logger.go | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/log/logger.go b/log/logger.go new file mode 100644 index 0000000..770f1c1 --- /dev/null +++ b/log/logger.go @@ -0,0 +1,42 @@ +package log + +import ( + "fmt" + "io" +) + +type Logger interface { + Log(format string, a ...interface{}) +} + +var ( + _ Logger = &logger{} + _ Logger = &nopLogger{} +) + +type logger struct { + w io.Writer +} + +func NewLogger(w io.Writer) (*logger, error) { + if w == nil { + return nil, fmt.Errorf("w is nil; NewLogger() needs a writer") + } + return &logger{ + w: w, + }, nil +} + +func (l *logger) Log(format string, a ...interface{}) { + fmt.Fprintf(l.w, format+"\n", a...) +} + +type nopLogger struct { +} + +func NewNopLogger() *nopLogger { + return &nopLogger{} +} + +func (l *nopLogger) Log(format string, a ...interface{}) { +} |