diff --git a/options.go b/options.go index 29fdbf84e..c80146eec 100644 --- a/options.go +++ b/options.go @@ -59,11 +59,13 @@ func Fields(fs ...zapcore.Field) Option { } // ErrorOutput sets the destination for errors generated by the logger. The -// supplied WriteSyncer is automatically wrapped with a mutex, so it need not be -// safe for concurrent use. +// supplied WriteSyncer must be safe for concurrent use. +// +// The Open and zapcore.Lock functions are the simplest ways to make files safe +// for concurrent use. func ErrorOutput(w zapcore.WriteSyncer) Option { return optionFunc(func(log *Logger) { - log.errorOutput = zapcore.Lock(w) + log.errorOutput = w }) } diff --git a/writer.go b/writer.go index 121db9826..238ca6f36 100644 --- a/writer.go +++ b/writer.go @@ -75,8 +75,8 @@ func open(paths []string) ([]zapcore.WriteSyncer, func(), error) { return writers, close, errs.AsError() } -// CombineWriteSyncers combines the passed set of WriteSyncer objects into a -// locked WriteSyncer. +// CombineWriteSyncers combines multiple WriteSyncers into a single, locked +// WriteSyncer. func CombineWriteSyncers(writers ...zapcore.WriteSyncer) zapcore.WriteSyncer { if len(writers) == 0 { return zapcore.AddSync(ioutil.Discard) diff --git a/zapcore/core.go b/zapcore/core.go index bf33b1af3..c8e59eb3d 100644 --- a/zapcore/core.go +++ b/zapcore/core.go @@ -61,7 +61,7 @@ func NewCore(enc Encoder, ws WriteSyncer, enab LevelEnabler) Core { return &ioCore{ LevelEnabler: enab, enc: enc, - out: Lock(ws), + out: ws, } }