lighthouse/beacon_node
Mac L fe75a0a9a1 Add background file logging (#2762)
## Issue Addressed

Closes #1996 

## Proposed Changes

Run a second `Logger` via `sloggers` which logs to a file in the background with:
- separate `debug-level` for background and terminal logging
- the ability to limit log size
- rotation through a customizable number of log files
- an option to compress old log files (`.gz` format)

Add the following new CLI flags:
- `--logfile-debug-level`: The debug level of the log files
- `--logfile-max-size`: The maximum size of each log file
- `--logfile-max-number`: The number of old log files to store
- `--logfile-compress`: Whether to compress old log files

By default background logging uses the `debug` log level and saves logfiles to:
- Beacon Node:  `$HOME/.lighthouse/$network/beacon/logs/beacon.log`
- Validator Client:  `$HOME/.lighthouse/$network/validators/logs/validator.log`

Or, when using the `--datadir` flag:
`$datadir/beacon/logs/beacon.log` and `$datadir/validators/logs/validator.log`

Once rotated, old logs are stored like so: `beacon.log.1`, `beacon.log.2` etc. 
> Note: `beacon.log.1` is always newer than `beacon.log.2`.

## Additional Info

Currently the default value of `--logfile-max-size` is 200 (MB) and `--logfile-max-number` is 5.
This means that the maximum storage space that the logs will take up by default is 1.2GB. 
(200MB x 5 from old log files + <200MB the current logfile being written to)
Happy to adjust these default values to whatever people think is appropriate. 

It's also worth noting that when logging to a file, we lose our custom `slog` formatting. This means the logfile logs look like this:
```
Oct 27 16:02:50.305 INFO Lighthouse started, version: Lighthouse/v2.0.1-8edd9d4+, module: lighthouse:413
Oct 27 16:02:50.305 INFO Configured for network, name: prater, module: lighthouse:414
```
2021-11-30 03:25:32 +00:00
..
beacon_chain Add background file logging (#2762) 2021-11-30 03:25:32 +00:00
client Update Lighthouse Dependencies (#2818) 2021-11-18 05:08:42 +00:00
eth1 Add background file logging (#2762) 2021-11-30 03:25:32 +00:00
genesis Update Lighthouse Dependencies (#2818) 2021-11-18 05:08:42 +00:00
http_api Revert peer DB changes from #2724 (#2828) 2021-11-25 03:45:52 +00:00
http_metrics Update Lighthouse Dependencies (#2818) 2021-11-18 05:08:42 +00:00
lighthouse_network Status'd Peer Not Found (#2761) 2021-11-28 22:46:17 +00:00
network Add background file logging (#2762) 2021-11-30 03:25:32 +00:00
operation_pool Add op pool metrics for attestations (#2758) 2021-11-01 05:52:31 +00:00
src De-duplicate attestations in the slasher (#2767) 2021-11-08 00:01:09 +00:00
store Add background file logging (#2762) 2021-11-30 03:25:32 +00:00
tests Altair consensus changes and refactors (#2279) 2021-07-09 06:15:32 +00:00
timer Update Lighthouse Dependencies (#2818) 2021-11-18 05:08:42 +00:00
websocket_server Server sent events (#1920) 2020-12-04 00:18:58 +00:00
Cargo.toml Rename eth2_libp2p to lighthouse_network (#2702) 2021-10-19 00:30:39 +00:00