2021-10-28 15:14:37 +02:00
## LogReader
2021-10-12 20:58:04 -07:00
2023-03-08 11:20:49 -08:00
Route is a class for conveniently accessing all the [logs ](/system/loggerd/ ) from your routes. The LogReader class reads the non-video logs, i.e. rlog.bz2 and qlog.bz2. There's also a matching FrameReader class for reading the videos.
2021-10-12 20:58:04 -07:00
```python
2023-08-20 20:49:55 -07:00
from openpilot.tools.lib.route import Route
from openpilot.tools.lib.logreader import LogReader
2021-10-12 20:58:04 -07:00
2023-08-03 13:18:44 -07:00
r = Route("a2a0ccea32023010|2023-07-27--13-01-19")
2021-10-12 20:58:04 -07:00
# get a list of paths for the route's rlog files
print(r.log_paths())
# and road camera (fcamera.hevc) files
print(r.camera_paths())
# setup a LogReader to read the route's first rlog
lr = LogReader(r.log_paths()[0])
# print out all the messages in the log
import codecs
codecs.register_error("strict", codecs.backslashreplace_errors)
for msg in lr:
print(msg)
# setup a LogReader for the route's second qlog
lr = LogReader(r.log_paths()[1])
# print all the steering angles values from the log
for msg in lr:
if msg.which() == "carState":
print(msg.carState.steeringAngleDeg)
```
2022-03-07 21:04:41 +03:00
### MultiLogIterator
`MultiLogIterator` is similar to `LogReader` , but reads multiple logs.
```python
2023-08-20 20:49:55 -07:00
from openpilot.tools.lib.route import Route
from openpilot.tools.lib.logreader import MultiLogIterator
2022-03-07 21:04:41 +03:00
# setup a MultiLogIterator to read all the logs in the route
2023-08-03 13:18:44 -07:00
r = Route("a2a0ccea32023010|2023-07-27--13-01-19")
2022-03-07 21:04:41 +03:00
lr = MultiLogIterator(r.log_paths())
# print all the steering angles values from all the logs in the route
for msg in lr:
if msg.which() == "carState":
print(msg.carState.steeringAngleDeg)
```