Rcl_logging_journal: a systemd-journald logging backend for ROS 2

Hi

I’ve developed a new alternative logging backend for ROS 2:

:page_with_curl: Checkout Overview Here

:point_right: GitHub - fujitatomoya/rcl_logging_journal: rcl_logging_journal is an alternative logging backend implementation that can be used for ROS 2 applications via rcl_logging_interface. · GitHub

demo

It writes ROS 2 log records straight into systemd-journald as structured, indexed entries — so instead of grepping text files under ~/.ros/log, you get journalctl with per-node filtering, built-in rotation/retention, and trusted metadata. Zero extra daemons or configuration.

export RCL_LOGGING_IMPLEMENTATION=rcl_logging_journal
ros2 run demo_nodes_cpp talker &

journalctl -f ROS2_NODE_NAME=talker           # follow one node live
journalctl -p warning --since "10 min ago"    # WARN+ in a time window
journalctl -b -1 -p err                       # errors before the last reboot

Highlights:

  • Indexed fields per record (ROS2_NODE_NAME, PRIORITY, …) plus your own fleet fields like ROBOT_ID
  • Containers log into the host journal by binding one socket — no daemon in the image
  • Async ring buffer on the hot path; FATAL is synchronous and fsynced. Benchmark harness included

Feedback, issues, and PRs welcome as always!

overview.pdf (786.1 KB)

thanks,
Tomoya

7 Likes