sl-jetson d421d63c6f feat: Add Issue #473 - Event Logger with structured JSON logging
Comprehensive event logging system for SaltyBot with:

Features:
- MQTT subscription to /saltybot/* state topics (9 event types)
- Structured JSON event logging to ~/.saltybot-data/events/YYYY-MM-DD.jsonl
- Event types: encounter, voice_command, trick, e-stop, geofence, dock, error, boot, shutdown
- Query service (time range + type filter)
- Stats publisher (/saltybot/event_stats) with daily summaries
- Dashboard live feed (/saltybot/event_feed)
- Automatic log rotation: compress >7 days, delete >90 days
- CSV export functionality
- Thread-safe event processing

Components:
- EventLogger ROS2 node with background timers
- Event dataclass with timestamp/type/source/data
- File-based storage (JSONL + compressed archives)
- Query API for time/type filtering
- CSV export utility
- Comprehensive unit tests (15 test cases)

Configuration:
- Data directory: ~/.saltybot-data/events
- Rotation: 7 days compress, 90 days delete
- Stats interval: 60 seconds
- Rotation check: hourly

Launch:
- event_logger.launch.py - Standalone launch
- Config: event_logger.yaml with topic mappings

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-05 12:09:07 -05:00

23 lines
692 B
Python

from setuptools import setup, find_packages
setup(
name='saltybot_event_logger',
version='0.1.0',
packages=find_packages(),
data_files=[
('share/ament_index/resource_index/packages', ['resource/saltybot_event_logger']),
('share/saltybot_event_logger', ['package.xml']),
],
install_requires=['setuptools'],
zip_safe=True,
author='seb',
author_email='seb@vayrette.com',
description='Structured JSON event logging with query service, stats, rotation, and export',
license='Apache-2.0',
entry_points={
'console_scripts': [
'event_logger_node = saltybot_event_logger.event_logger_node:main',
],
},
)