Skip to content

Commit f505d86

Browse files
author
Julien Pivotto
authored
Merge pull request #474 from jkroepke/custom-logger
Allow custom log.Logger
2 parents e27922a + 01d2b4a commit f505d86

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

promlog/log.go

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -111,13 +111,16 @@ type Config struct {
111111
// New returns a new leveled oklog logger. Each logged line will be annotated
112112
// with a timestamp. The output always goes to stderr.
113113
func New(config *Config) log.Logger {
114-
var l log.Logger
115114
if config.Format != nil && config.Format.s == "json" {
116-
l = log.NewJSONLogger(log.NewSyncWriter(os.Stderr))
117-
} else {
118-
l = log.NewLogfmtLogger(log.NewSyncWriter(os.Stderr))
115+
return NewWithLogger(log.NewJSONLogger(log.NewSyncWriter(os.Stderr)), config)
119116
}
120117

118+
return NewWithLogger(log.NewLogfmtLogger(log.NewSyncWriter(os.Stderr)), config)
119+
}
120+
121+
// NewWithLogger returns a new leveled oklog logger with a custom log.Logger.
122+
// Each logged line will be annotated with a timestamp.
123+
func NewWithLogger(l log.Logger, config *Config) log.Logger {
121124
if config.Level != nil {
122125
l = log.With(l, "ts", timestampFormat, "caller", log.Caller(5))
123126
l = level.NewFilter(l, config.Level.o)
@@ -131,13 +134,17 @@ func New(config *Config) log.Logger {
131134
// with a timestamp. The output always goes to stderr. Some properties can be
132135
// changed, like the level.
133136
func NewDynamic(config *Config) *logger {
134-
var l log.Logger
135137
if config.Format != nil && config.Format.s == "json" {
136-
l = log.NewJSONLogger(log.NewSyncWriter(os.Stderr))
137-
} else {
138-
l = log.NewLogfmtLogger(log.NewSyncWriter(os.Stderr))
138+
return NewDynamicWithLogger(log.NewJSONLogger(log.NewSyncWriter(os.Stderr)), config)
139139
}
140140

141+
return NewDynamicWithLogger(log.NewLogfmtLogger(log.NewSyncWriter(os.Stderr)), config)
142+
}
143+
144+
// NewDynamicWithLogger returns a new leveled logger with a custom io.Writer.
145+
// Each logged line will be annotated with a timestamp.
146+
// Some properties can be changed, like the level.
147+
func NewDynamicWithLogger(l log.Logger, config *Config) *logger {
141148
lo := &logger{
142149
base: l,
143150
leveled: l,

0 commit comments

Comments
 (0)