Improved documentation of Fatal Handlers
diff --git a/README.md b/README.md
index ee8bd12..f8302c3 100644
--- a/README.md
+++ b/README.md
@@ -384,3 +384,19 @@
hook.Reset()
assert.Nil(hook.LastEntry())
```
+
+#### Fatal handlers
+
+Logrus can register one or more functions that will be called when any `fatal`
+level message is logged. The registered handlers will be executed before
+logrus performs a `os.Exit(1)`. This behavior may be helpful if callers need
+to gracefully shutdown. Unlike a `panic("Something went wrong...")` call which can be intercepted with a deferred `recover` a call to `os.Exit(1)` can not be intercepted.
+
+```
+...
+handler := func() {
+ // gracefully shutdown something...
+}
+logrus.RegisterExitHandler(handler)
+...
+```
diff --git a/alt_exit.go b/alt_exit.go
index 889a504..b4c9e84 100644
--- a/alt_exit.go
+++ b/alt_exit.go
@@ -51,9 +51,14 @@
os.Exit(code)
}
-// RegisterExitHandler adds a Logrus atexit handler, call logrus.Exit to invoke
+// RegisterExitHandler adds a Logrus Exit handler, call logrus.Exit to invoke
// all handlers. The handlers will also be invoked when any Fatal log entry is
// made.
+//
+// This method is useful when a caller wishes to use logrus to log a fatal
+// message but also needs to gracefully shutdown. An example usecase could be
+// closing database connections, or sending a alert that the application is
+// closing.
func RegisterExitHandler(handler func()) {
handlers = append(handlers, handler)
}