| 422 | } |
| 423 | |
| 424 | func terminalHookOverride(defaultHook, override zapcore.CheckWriteHook) zapcore.CheckWriteHook { |
| 425 | // A nil or WriteThenNoop hook will lead to continued execution after |
| 426 | // a Panic or Fatal log entry, which is unexpected. For example, |
| 427 | // |
| 428 | // f, err := os.Open(..) |
| 429 | // if err != nil { |
| 430 | // log.Fatal("cannot open", zap.Error(err)) |
| 431 | // } |
| 432 | // fmt.Println(f.Name()) |
| 433 | // |
| 434 | // The f.Name() will panic if we continue execution after the log.Fatal. |
| 435 | if override == nil || override == zapcore.WriteThenNoop { |
| 436 | return defaultHook |
| 437 | } |
| 438 | return override |
| 439 | } |