# Rcl\_logging\_journal: a systemd-journald logging backend for ROS 2

**URL:** <https://discourse.openrobotics.org/t/rcl-logging-journal-a-systemd-journald-logging-backend-for-ros-2/57971>\
**Category:** Projects\
**Tags:** ros2\
**Created:** [September 9, 2026, 3:00am UTC](https://discourse.openrobotics.org/t/rcl-logging-journal-a-systemd-journald-logging-backend-for-ros-2/57971 "2026-09-09T03:00:28Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![tomoyafujita](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/tomoyafujita/32/6097_2.png) [@tomoyafujita](https://discourse.openrobotics.org/u/tomoyafujita)\
**Post date:** [September 9, 2026, 3:00am UTC](https://discourse.openrobotics.org/t/rcl-logging-journal-a-systemd-journald-logging-backend-for-ros-2/57971/1 "2026-09-09T03:00:28Z")

</div>

Hi

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

📃 **[Checkout Overview Here](https://raw.githack.com/fujitatomoya/rcl_logging_journal/rolling/doc/overview.html)**

👉 **[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](https://github.com/fujitatomoya/rcl_logging_journal)**

![demo](https://us1.discourse-cdn.com/flex022/uploads/ros/original/3X/1/7/178cfff55f0c05e8ea7ff64284a0563b7ebb4e29.gif)

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.

```bash
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](https://discourse.openrobotics.org/uploads/short-url/u0uHGZq8IiQpEeEy77fcZbzttT.pdf) (786.1 KB)

thanks,  
Tomoya
