mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-19 21:04:41 +00:00
Logging via the HTTP API (#4074)
This PR adds the ability to read the Lighthouse logs from the HTTP API for both the BN and the VC. This is done in such a way to as minimize any kind of performance hit by adding this feature. The current design creates a tokio broadcast channel and mixes is into a form of slog drain that combines with our main global logger drain, only if the http api is enabled. The drain gets the logs, checks the log level and drops them if they are below INFO. If they are INFO or higher, it sends them via a broadcast channel only if there are users subscribed to the HTTP API channel. If not, it drops the logs. If there are more than one subscriber, the channel clones the log records and converts them to json in their independent HTTP API tasks. Co-authored-by: Michael Sproul <micsproul@gmail.com>
This commit is contained in:
@@ -679,3 +679,31 @@ Caveats:
|
||||
This is because the state _prior_ to the `start_epoch` needs to be loaded from the database, and
|
||||
loading a state on a boundary is most efficient.
|
||||
|
||||
|
||||
### `/lighthouse/logs`
|
||||
|
||||
This is a Server Side Event subscription endpoint. This allows a user to read
|
||||
the Lighthouse logs directly from the HTTP API endpoint. This currently
|
||||
exposes INFO and higher level logs. It is only enabled when the `--gui` flag is set in the CLI.
|
||||
|
||||
Example:
|
||||
|
||||
```bash
|
||||
curl -N "http://localhost:5052/lighthouse/logs"
|
||||
```
|
||||
|
||||
Should provide an output that emits log events as they occur:
|
||||
```json
|
||||
{
|
||||
"data": {
|
||||
"time": "Mar 13 15:28:41",
|
||||
"level": "INFO",
|
||||
"msg": "Syncing",
|
||||
"service": "slot_notifier",
|
||||
"est_time": "1 hr 27 mins",
|
||||
"speed": "5.33 slots/sec",
|
||||
"distance": "28141 slots (3 days 21 hrs)",
|
||||
"peers": "8"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user