File tree Expand file tree Collapse file tree 1 file changed +25
-2
lines changed
Expand file tree Collapse file tree 1 file changed +25
-2
lines changed Original file line number Diff line number Diff 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+
3345type 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
4568func (d defaultLogger ) Printf (format string , v ... interface {}) {
You can’t perform that action at this time.
0 commit comments