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>
23 lines
692 B
Python
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',
|
|
],
|
|
},
|
|
)
|