Possible values are NORMAL (or 0 or undef), which will not show INFO or debug messages, VERBOSE (1; shows INFO not debug), ASSERT (2; only ignores TRACE messages), or DEBUG (3) which shows everything. See section "Run modes" in Log::Report.

You are advised to use the symbolic mode names when the mode is changed within your program: the numerical values are available for smooth Getopt::Long integration.

With a filter, you can block or modify specific messages before translation. There may be a wish to change the REASON of a report or its content. It is not possible to avoid the exit which is related to the original message, because a module's flow depends on it to happen.

When there are filters defined, they will be called in order of definition. For each of the dispatchers which are called for a certain REASON (which accept that REASON), it is checked whether its name is listed for the filter (when no names where specified, then the filter is applied to all dispatchers).

When selected, the filter's CODE reference is called with four arguments: the dispatcher object (a Log::Report::Dispatcher), the HASH-of-OPTIONS passed as optional first argument to Log::Report::report(), the REASON, and the MESSAGE. Returned is the new REASON and MESSAGE. When the returned REASON is undef, then the message will be ignored for that dispatcher.