You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							59 lines
						
					
					
						
							1.9 KiB
						
					
					
				
			
		
		
	
	
							59 lines
						
					
					
						
							1.9 KiB
						
					
					
				## LogReader
 | 
						|
 | 
						|
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.
 | 
						|
 | 
						|
```python
 | 
						|
from openpilot.tools.lib.route import Route
 | 
						|
from openpilot.tools.lib.logreader import LogReader
 | 
						|
 | 
						|
r = Route("a2a0ccea32023010|2023-07-27--13-01-19")
 | 
						|
 | 
						|
# 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)
 | 
						|
```
 | 
						|
 | 
						|
### Segment Ranges
 | 
						|
 | 
						|
We also support a new format called a "segment range":
 | 
						|
 | 
						|
```
 | 
						|
344c5c15b34f2d8a   /   2024-01-03--09-37-12   /     2:6    /       q
 | 
						|
[   dongle id     ] [       timestamp        ] [ selector ]  [ query type]
 | 
						|
```
 | 
						|
 | 
						|
you can specify which segments from a route to load
 | 
						|
 | 
						|
```python
 | 
						|
lr = LogReader("a2a0ccea32023010|2023-07-27--13-01-19/4")   # 4th segment
 | 
						|
lr = LogReader("a2a0ccea32023010|2023-07-27--13-01-19/4:6") # 4th and 5th segment
 | 
						|
lr = LogReader("a2a0ccea32023010|2023-07-27--13-01-19/-1")  # last segment
 | 
						|
lr = LogReader("a2a0ccea32023010|2023-07-27--13-01-19/:5")  # first 5 segments
 | 
						|
lr = LogReader("a2a0ccea32023010|2023-07-27--13-01-19/1:")  # all except first segment
 | 
						|
```
 | 
						|
 | 
						|
and can select which type of logs to grab
 | 
						|
 | 
						|
```python
 | 
						|
lr = LogReader("a2a0ccea32023010|2023-07-27--13-01-19/4/q") # get qlogs
 | 
						|
lr = LogReader("a2a0ccea32023010|2023-07-27--13-01-19/4/r") # get rlogs (default)
 | 
						|
```
 | 
						|
 |