Skip to content

Commit a606098

Browse files
authored
feat: make log writer configurable (#283)
1 parent 47e507a commit a606098

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

log.go

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package cmd
22

33
import (
4+
"io"
45
"os"
56

67
"github.com/hamba/logger/v2"
@@ -41,8 +42,18 @@ var LogFlags = Flags{
4142
},
4243
}
4344

45+
// LoggerOptions are options for creating a logger.
46+
type LoggerOptions struct {
47+
Writer io.Writer
48+
}
49+
4450
// NewLogger returns a logger configured from the cli.
4551
func NewLogger(c *cli.Context) (*logger.Logger, error) {
52+
return NewLoggerWithOptions(c, &LoggerOptions{})
53+
}
54+
55+
// NewLoggerWithOptions returns a logger configured from the cli.
56+
func NewLoggerWithOptions(c *cli.Context, opts *LoggerOptions) (*logger.Logger, error) {
4657
str := c.String(FlagLogLevel)
4758
if str == "" {
4859
str = "info"
@@ -65,7 +76,12 @@ func NewLogger(c *cli.Context) (*logger.Logger, error) {
6576
fields[i] = ctx.Str(t[0], t[1])
6677
}
6778

68-
return logger.New(os.Stdout, fmtr, lvl).With(fields...), nil
79+
w := opts.Writer
80+
if w == nil {
81+
w = os.Stdout
82+
}
83+
84+
return logger.New(w, fmtr, lvl).With(fields...), nil
6985
}
7086

7187
func newLogFormatter(c *cli.Context) logger.Formatter {

observe/observer.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ type Options struct {
2424
LogTimeFormat string
2525
LogTimestamps bool
2626
LogCtx []logger.Field
27+
LogWriter io.Writer
2728

2829
StatsRuntime bool
2930
StatsTags []statter.Tag
@@ -61,7 +62,7 @@ func NewFromCLI(cliCtx *cli.Context, svc string, opts *Options) (*Observer, erro
6162
}
6263

6364
// Logger.
64-
log, err := cmd.NewLogger(cliCtx)
65+
log, err := cmd.NewLoggerWithOptions(cliCtx, &cmd.LoggerOptions{Writer: opts.LogWriter})
6566
if err != nil {
6667
return nil, err
6768
}

0 commit comments

Comments
 (0)