fix(shipping): use `log.NewSyncWriter` in example
Replace the use of `serializedLogger` with `log.NewSyncWriter` which
provides similar functionality.
`SyncWriter` is chosen over `SyncLogger` to reduce the amount of work
contained within a lock.
Terin Stock
6 years ago
6 | 6 | "net/http" |
7 | 7 | "os" |
8 | 8 | "os/signal" |
9 | "sync" | |
10 | 9 | "syscall" |
11 | 10 | "time" |
12 | 11 | |
45 | 44 | flag.Parse() |
46 | 45 | |
47 | 46 | var logger log.Logger |
48 | logger = log.NewLogfmtLogger(os.Stderr) | |
49 | logger = &serializedLogger{Logger: logger} | |
47 | logger = log.NewLogfmtLogger(log.NewSyncWriter(os.Stderr)) | |
50 | 48 | logger = log.With(logger, "ts", log.DefaultTimestampUTC) |
51 | 49 | |
52 | 50 | var ( |
199 | 197 | panic(err) |
200 | 198 | } |
201 | 199 | } |
202 | ||
203 | type serializedLogger struct { | |
204 | mtx sync.Mutex | |
205 | log.Logger | |
206 | } | |
207 | ||
208 | func (l *serializedLogger) Log(keyvals ...interface{}) error { | |
209 | l.mtx.Lock() | |
210 | defer l.mtx.Unlock() | |
211 | return l.Logger.Log(keyvals...) | |
212 | } |