Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions osgar/logger.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@
import mmap
import pathlib

import json

g_logger = logging.getLogger(__name__)

MAGIC = b'Pyr\x00'
Expand Down Expand Up @@ -374,6 +376,20 @@ def lookup_stream_id(filename, stream_name):
return names.index(stream_name) + 1


def lookup_config(filename):
with LogReader(filename) as log:
for __, channel, line in log:
if channel != 0:
break
try:
d = literal_eval(line.decode('ascii'))
except Exception:
continue
if isinstance(d, dict) and 'names' not in d:
return d
return None


def calculate_stat(filename):
names = ['sys'] + lookup_stream_names(filename)
sizes = [0] * len(names)
Expand Down Expand Up @@ -403,12 +419,19 @@ def main():
type=float, default=0.0)
parser.add_argument('--end-time-sec', '-e', help='cut end at given time (sec)',
type=float, default=None)
parser.add_argument('--config', help='extract configuration JSON', action='store_true')
args = parser.parse_args()

if args.list_names:
print(lookup_stream_names(args.logfile))
sys.exit()

if args.config:
cfg = lookup_config(args.logfile)
if cfg:
print(json.dumps(cfg, indent=4))
sys.exit()

if args.stream is None and not args.all:
names, sizes, counts, timestamp = calculate_stat(args.logfile)
seconds = timestamp.total_seconds()
Expand Down
Loading