@@ -237,12 +237,12 @@ func NewDevelopmentConfig() Config {
237
237
238
238
// Build constructs a logger from the Config and Options.
239
239
func (cfg Config ) Build (opts ... Option ) (* Logger , error ) {
240
- enc , err := cfg .buildEncoder ()
240
+ enc , err := cfg .buildEncoder (filterOptions [ wrapEncoderOption ]( opts ... ) ... )
241
241
if err != nil {
242
242
return nil , err
243
243
}
244
244
245
- sink , errSink , err := cfg .openSinks ()
245
+ sink , errSink , err := cfg .openSinks (filterOptions [ wrapSinkerOption ]( opts ... ) ... )
246
246
if err != nil {
247
247
return nil , err
248
248
}
@@ -256,7 +256,7 @@ func (cfg Config) Build(opts ...Option) (*Logger, error) {
256
256
cfg .buildOptions (errSink )... ,
257
257
)
258
258
if len (opts ) > 0 {
259
- log = log .WithOptions (opts ... )
259
+ log = log .WithOptions (filterOptions [ Option ]( opts ... ) ... )
260
260
}
261
261
return log , nil
262
262
}
@@ -312,19 +312,38 @@ func (cfg Config) buildOptions(errSink zapcore.WriteSyncer) []Option {
312
312
return opts
313
313
}
314
314
315
- func (cfg Config ) openSinks () (zapcore.WriteSyncer , zapcore.WriteSyncer , error ) {
315
+ func (cfg Config ) openSinks (opts ... wrapSinkerOption ) (zapcore.WriteSyncer , zapcore.WriteSyncer , error ) {
316
316
sink , closeOut , err := Open (cfg .OutputPaths ... )
317
317
if err != nil {
318
318
return nil , nil , err
319
319
}
320
- errSink , _ , err := Open (cfg .ErrorOutputPaths ... )
320
+ errSink , errCloseOut , err := Open (cfg .ErrorOutputPaths ... )
321
321
if err != nil {
322
322
closeOut ()
323
323
return nil , nil , err
324
324
}
325
+
326
+ for _ , opt := range opts {
327
+ sink , errSink , err = opt .wrapSink (cfg .OutputPaths , sink , cfg .ErrorOutputPaths , errSink )
328
+ if err != nil {
329
+ closeOut ()
330
+ errCloseOut ()
331
+ return nil , nil , err
332
+ }
333
+ }
325
334
return sink , errSink , nil
326
335
}
327
336
328
- func (cfg Config ) buildEncoder () (zapcore.Encoder , error ) {
329
- return newEncoder (cfg .Encoding , cfg .EncoderConfig )
337
+ func (cfg Config ) buildEncoder (opts ... wrapEncoderOption ) (zapcore.Encoder , error ) {
338
+ enc , err := newEncoder (cfg .Encoding , cfg .EncoderConfig )
339
+ if err != nil {
340
+ return nil , err
341
+ }
342
+ for _ , opt := range opts {
343
+ enc , err = opt .wrapEncoder (cfg .Encoding , cfg .EncoderConfig , enc )
344
+ if err != nil {
345
+ return nil , err
346
+ }
347
+ }
348
+ return enc , nil
330
349
}
0 commit comments