* If the shaper is in overload and the final message comes in, but no
further messages arrive for some time, until another message came in,
the drop count would not be printed. Now we set a timer to ensure it
prints the drop count after the current second expires.
* Allow the shaper to take a filter function that allows events that
would not normally be printed anyway to not be counted against the
HWM. This means that if you're suppressing supervisor startup messages
you won't see drop events counted for messages you'd never see
printed.
Add ability for handlers to 'fatally' fail, so they won't attempt to
reinstall themselves later.
Also fix an issue with the INT_LOG macro not doing the right thing when
only the lager_throttle_backend was installed.
Adds transparent event stream processing and statistics.
A new 3-tuple trace is introduced as `{Key, Op, Value}`, but
for backwards compatibility `{Key, Val}` implies `=` for `Op`
and `{Key, '*'}` remains as is in the case of wildcards.
A simplified query tree module is generated which reduces
redundant selection conditions to minimize filtering overhead.
This is done via a combination of several things:
* Make the loglevel that triggers a sync configurable
* Make the delayed_write size and intervals configurable
* Make the interval at which external rotation is checked for
configurable
* Store the timestamp a lager_msg was created inside the lager_msg
To support these changes, several other things had to be modified:
* lager_msg:timestamp now returns a timestamp
* lager_msg:datetime was added to return the {date, time} of a message,
like lager_msg:timestamp used to
* The configuration syntax for file backends was changed to be of the
form {lager_file_backend, proplist()} and the old syntax was
deprecated
Additionally, the defaults for the check_interval was raised from
'always' to 1 second, and the sync_interval was changed from 2 seconds
to one second.
I didn't want the lager_log_message record being used across application
boundaries, this will insulate other applications from any changes to
the message type's internal structure.