aboutsummaryrefslogtreecommitdiff
path: root/log/logger.go
diff options
context:
space:
mode:
Diffstat (limited to 'log/logger.go')
-rw-r--r--log/logger.go42
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{}) {
+}