Review logging to keep all debugging information in RAM and flush only if useful
The main goal of this patch is to keep all DEBUG logs and packet logger enabled without exploding disk usage. This is done by keeping the last 16 MB (by default) of debugging information in a RAM buffer, and to emit it to an SQLite DB upon RTMIN signal or in case of warning and more severe log. Implementation is also cleaned up for better integration within a framework or if run standalone. NEO logger is now a direct child of root handler. Only warnings and more severe logs are forwarded to root handler. A new script 'neolog' is added to pretty-print the contents of the SQLite log. In unit tests, logging events are not buffered but emitted immediately. When a test passes, payloads of all exchanged packets are discarded to reduce disk usage on test bots. This slows down performance tests by about 15 % because even if nothing is written to disk, debug and packet log records are now always rendered.
1 parent 4df3c4e1
Showing 41 changed files with 409 additions and 277 deletions
neo/scripts/neolog.py 0 → 100644