When logging when is an error fatal

error handlinglog4jlog4netlogging

In logging frameworks like log4j & log4net you have the ability to log various levels of information. Most of the levels have obvious intentions (such as what a "Debug" log is vs. a "Error"). However, one thing that I have always been timid on was classifying my logging as "Fatal".

What type of errors are so severe that they should be classified as fatal? While this is slightly case driven, what are some of the rules-of-thumb that you use when deciding between logging an exception as fatal or just simply error?

Best Answer

I consider fatal errors to be when your application can't do any more useful work. Non-fatal errors are when there's a problem but your application can still continue to function, even at a reduced level of functionality or performance.

Examples of fatal errors include:

  • Running out of disk space on the logging device and you're required to keep logging.
  • Total loss of network connectivity in a client application.
  • Missing configuration information if no default can be used.

Non-fatal errors would include:

  • A server where a single session fails for some reason but you can still service other clients.
  • An intermittent error, such as lost session, if a new session can be established.
  • Missing configuration information if a default value can be used.
Related Topic