Skip to content

Commit 5416b58

Browse files
committed
feat(x): configurable logger output
1 parent b8a55c3 commit 5416b58

File tree

1 file changed

+25
-2
lines changed

1 file changed

+25
-2
lines changed

x/logging/logging.go

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"context"
1919
"errors"
2020
"fmt"
21+
"io"
2122
"log"
2223
"os"
2324
"runtime"
@@ -30,16 +31,38 @@ type Logger interface {
3031
Errorf(format string, v ...interface{})
3132
}
3233

34+
type Option func(l *defaultLogger)
35+
36+
func WithOut(out io.Writer) Option {
37+
return func(l *defaultLogger) {
38+
if out == nil {
39+
return
40+
}
41+
l.logger = newDefaultLogger(out)
42+
}
43+
}
44+
3345
type defaultLogger struct {
3446
logger *log.Logger
3547
prefix string
3648
}
3749

38-
func NewDefaultLogger(prefix string) Logger {
50+
func newDefaultLogger(out io.Writer) *log.Logger {
51+
return log.New(out, "", log.LstdFlags)
52+
}
53+
54+
func NewDefaultLogger(prefix string, options ...Option) Logger {
3955
if prefix != "" && !strings.HasSuffix(prefix, ": ") {
4056
prefix += ": "
4157
}
42-
return &defaultLogger{logger: log.New(os.Stderr, "", log.LstdFlags), prefix: prefix}
58+
logger := &defaultLogger{prefix: prefix}
59+
for _, option := range options {
60+
option(logger)
61+
}
62+
if logger.logger == nil {
63+
logger.logger = newDefaultLogger(os.Stderr)
64+
}
65+
return logger
4366
}
4467

4568
func (d defaultLogger) Printf(format string, v ...interface{}) {

0 commit comments

Comments
 (0)