---
title: 【ROSConJP 2026】ros2log: ROS 2のログ制御を統合する公式CLIの開発
tags: 
author: [Decwest](https://www.docswell.com/user/Decwest)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/9J29LM8DER.jpg?width=480
description: ROSConJP 2026「ros2log: ROS 2のログ制御を統合する公式CLIの開発 」の発表スライドです．
published: August 05, 26
canonical: https://www.docswell.com/s/Decwest/KVJ87P-2026-08-05-230822
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/9J29LM8DER.jpg)

ros2log: ROS 2のログ制御を統合する
公式CLIの開発
〇大西 史弥（慶應義塾大学），藤田 智哉（TriOrb.Inc）
※ROS Japan Developer会議での取り組みです
1/20


# Page. 2

![Page Image](https://bcdn.docswell.com/page/DEY4QX6MJM.jpg)

ROS Japan Developer 会議 とは
◼概要
– ROS本線を開発しよう
– 技術課題をシェアしよう
– 目指せ！ROSコミッター＆メンテナー
◼取り組み
– ROS本線の技術課題や新機能提案について議論
• オンライン，隔週，水曜日 20:00～20:50
• 半年に一回程度，対面会議も実施
Join Now!
2/20


# Page. 3

![Page Image](https://bcdn.docswell.com/page/VJNYK1Z378.jpg)

目次
◼ros2logの紹介
– 開発の背景
– ros2logの機能
– 実装の詳細
– Limitation・今後の展望
◼REP (Robotics Enhancement Proposal) の紹介
– REPとは
– REPに基づく標準化プロセス
– ros2logでの具体例
◼（大西が）開発をして思ったこと
◼まとめ
3/20


# Page. 4

![Page Image](https://bcdn.docswell.com/page/YE9PV5ZPJ3.jpg)

開発の背景
• 全て表示されて見にくい…
• ログレベルが混在…
4/20


# Page. 5

![Page Image](https://bcdn.docswell.com/page/GE8DPY1XED.jpg)

開発の背景
◼実行中のログレベル変更
ros2 service call ¥
&lt;ノード名&gt;/set_logger_levels ¥
rcl_interfaces/srv/SetLoggerLevels ¥
&quot;{levels: [{name: &lt;logger名&gt;, level: &lt;レベル数値&gt;}]}&quot;
–  毎回手で打つのは煩雑…
注）実行中のログレベル変更は、ノード生成時に
enable_logger_service=true
としたもののみが対象
•
•
Python
node = Node(&#039;NodeWithLoggerService&#039;,
enable_logger_service=True)
C++
auto node =
std::make_shared&lt;rclcpp::Node&gt;
(&quot;NodeWithLoggerService&quot;,
rclcpp::NodeOptions()
.enable_logger_service(true))
5/20


# Page. 6

![Page Image](https://bcdn.docswell.com/page/LELM14QN7R.jpg)

取り組み概要
✓ ROS 2のログ制御を統合するCLI ros2log を開発
✓ 公式の標準化プロセスにREP-0156として提案
ROS 2 Lyrical以降で使用可能
6/20


# Page. 7

![Page Image](https://bcdn.docswell.com/page/4JMYWK1QJW.jpg)

使用例
◼ros2 log watch --regex controller
ログ出力をフィルタ！
7/20


# Page. 8

![Page Image](https://bcdn.docswell.com/page/PJR9YXLK79.jpg)

使用例
旧コマンド→
◼ros2 log set /controller_server DEBUG
ros2 service call ¥
/controller_server/set_logger_levels ¥
rcl_interfaces/srv/SetLoggerLevels ¥
&quot;{levels: [{name: controller_server, level: 10}]}&quot;
ログレベルを変更！
8/20


# Page. 9

![Page Image](https://bcdn.docswell.com/page/PEXQG6W5JX.jpg)

使用例
◼ros2 log watch --logger controller_server --level DEBUG
ログ出力をフィルタ！
9/20


# Page. 10

![Page Image](https://bcdn.docswell.com/page/3EK941VRED.jpg)

ros2logの紹介
10/20


# Page. 11

![Page Image](https://bcdn.docswell.com/page/L73WLQMG75.jpg)

ros2logの機能
◼コマンド
– ros2 log &lt;subcommand&gt;
◼サブコマンド一覧
ロ
グ
フ
ィ
ル
タ
– watch [options]
• /rosoutトピックをサブスクライブし，以下の[options]でフィルタされたログを出力
➢ --level：ログレベル
➢ --regex：正規表現
➢ --logger:ロガー名（現実装ではノード名）
– levels
ロ
グ
レ
ベ
ル
変
更
• ログレベルの一覧を出力（UNSET，DEBUG，INFO，WARN，ERROR，FATAL）
– list
• 実行中にログレベルの変更が可能なノード一覧を出力
– get &lt;node&gt;
• 対象ノード&lt;node&gt;の現在のログレベルを取得
– set &lt;node&gt; &lt;level&gt;
• 対象ノード&lt;node&gt;のログレベルを設定値&lt;level&gt;に変更
11/20


# Page. 12

![Page Image](https://bcdn.docswell.com/page/87DKN96NJG.jpg)

実装の詳細
◼ros2logの開発場所
– ros2cli： https://github.com/ros2/ros2cli
– 実装言語：Python
• ros2cliはPython製CLIフレームワーク
• ros2 &lt;command&gt;は内部でPythonが実行されている
◼各サブコマンド実装のポイント
– watch
➢/rosoutトピックをサブスクライブ
➢Content Filtered Topicsを活用
– list, get, set
【Content Filtered Topicsとは】
• 内容の条件を満たすメッセージのみ受信するように
サブスクライバーを設定できる機能
（厳密には，DDSのContentFilteredTopicを
ROS 2のRMW層から利用する仕組み）
• 不要な受信処理や通信量の削減が可能
➢ /node/get_logger_levels，/node/set_logger_levels サービスを活用
（ノード作成時，enable_logger_service=Trueとすると使用可能）
• list：get, setサービスを有するノードを列挙
• get：getサービスのラッパー
• set：setサービスのラッパー
12/20


# Page. 13

![Page Image](https://bcdn.docswell.com/page/VJPK5ZYNE8.jpg)

Limitation・今後の展望
◼ログフィルタに関して
➢/rosoutトピックに含まれないログは表示できない
• Launchシステム自身のログ，OS/デバイスのsyslog，過去のログなど…
ros2 log watchは/rosoutのライブログのみを対象
• ログの保存方式・保存先・保存有無は，logging backendやユーザ設定によって
実行ごとに変わりうるため
◼ログレベル変更に関して
Node &quot;my_node&quot;
root logger
➢ノードに紐づくroot logger以外 (child logger) の制御は困難
＝ノード名
➢各loggerの情報を取得する`describe`サブコマンドも未実装
– 理由：ROS 2にlogger名を列挙するAPIが無いため
child logger
child logger
logger名を列挙するAPIを追加し，
my_node.foo
my_node.bar
`describe`サブコマンドとchild loggerの制御にも対応
Child logger
13/20


# Page. 14

![Page Image](https://bcdn.docswell.com/page/2EVVPWGYEQ.jpg)

REPの紹介
14/20


# Page. 15

![Page Image](https://bcdn.docswell.com/page/57GLPD8WEL.jpg)

REPとは[1]
◼REP (Robotics Enhancement Proposal)
– OSRAが管轄するオープンソースプロジェクトへの
機能強化の内容・方法・理由を説明する文書
– 複数のPull Request、リポジトリにまたがる
大規模変更が主な対象
– 2025年10月に現体制へ移行（旧：ROS Enhancement Proposal）
•
•
•
•
•
ROS
Gazebo
Open-RMF
ROS Infrastructure
ros_control
OSRA管轄の
OSSプロジェクト
◼REPの種類
– 標準規格 (Standard)：プロジェクト群が準拠すべき制約やパターン
• 例：単位，座標系，ハードウェアドライバのインタフェース etc…
• ros2log (REP-0156) はこれ：複数のロギング実装が従う共通インタフェース
– 仕様 (Specification)：実装間の相互運用を保証するデータ形式・APIの定義
• 例：package.xml, メッセージの定義，ROS executorのAPI etc…
– メタ文書 (Meta)：REPプロセス自体の定義
• 例：REP 0001:2025
[1] REP 0001:2025, https://reps.openrobotics.org/rep-0001-2025/
15/20


# Page. 16

![Page Image](https://bcdn.docswell.com/page/4EQY219QJP.jpg)

REPのStatus
◼Draft
– REP文書がrepリポジトリにマージされたが，
まだ採択、却下されていない状態
◼Accepted・Rejected
– 関連PMCによる正式なプロセスを経て
採択・却下された状態
◼Finalized
REP文書が
repリポジトリにマージ
Draft
ROS PMCによる
レビュー
– 採択済みで，実装も完了・マージされた状態
◼ Superseded
– より新しいFinalized REPに置き換えられた状態
◼ Withdrawn
– 著者側が取り下げた or 不活動で取り下げられた状態
◼ Deferred
– 採択前に進捗が停滞した状態
Accepted
Rejected
全ての実装を
mainlineにマージ
改善して新たな
REPを作成
Finalized
16/20


# Page. 17

![Page Image](https://bcdn.docswell.com/page/KJ4WLRXY71.jpg)

REPに基づく標準化プロセス
1. 提案内容の妥当性をオープンな場で議論
–
REPを要する規模や性質のものか、など
2. REP文書の作成
–
目的、仕様、動機、後方互換性、実装方針などを整理
None
3. openrobotics/repsリポジトリへPull Requestを作成
–
–
関連するPMCからSponsorを得る
REP Editorsに確認いただき、マージしていただく
4. オープンな場で議論を継続しながら、実装
– ROS Discourse, Open RoboticsのZulip等で議論スレッドを立てる
– 公式リポジトリからブランチを切って実装
5. ROS PMCにREPの承認を依頼
–
REPが十分議論済みで、REPに記載した内容全ての実装方針が現実的か
6. REPに記載した内容全ての実装をmainlineにマージ
Draft
Accepted
Finalized
17/20


# Page. 18

![Page Image](https://bcdn.docswell.com/page/LE1YLQNN7G.jpg)

REPに基づく標準化プロセス ～ros2logの場合～
1. 提案内容の妥当性をオープンな場で議論
–
ros2cli, ros2 repositoryのIssueで議論した
2. REP文書の作成
–
REP-0156を作成した
None
3. openrobotics/repsリポジトリへPull Requestを作成
–
–
ros2cliを管轄するROS PMCからSponsorを得た（mjcarrollさん）
REP Editors（Geoffさん）にご確認いただき、マージしていただいた
4. オープンな場で議論を継続しながら、実装
– ROS Discourseに議論スレッドを立てた
– ros2cliのmainブランチから切って開発中（←今ここ）
5. ROS PMCにREPの承認を依頼
–
REPが十分議論済みで、REPに記載した内容全ての実装方針が現実的か
6. REPに記載した内容全ての実装をmainlineにマージ
Draft
Accepted
Finalized
18/20


# Page. 19

![Page Image](https://bcdn.docswell.com/page/GEWGVLMMJ2.jpg)

（大西が）開発をして思ったこと
◼まずは「作りたい・貢献したい」という意志が大切
– コードは生成AIで書ける時代に．気持ち先行で，知識は後から補う形も？
– 自分もros2cliを知らないまま挑戦
開発を通して実装やREPのプロセスを理解
◼ROS 2は自らの手で変えられるという感覚
– OSSなので，誰でもPull Requestで改変できる
使いにくい点を我慢せず，ROS本線に改善を入れる発想が生まれる
◼日本でROS本線の開発に携わるなら，ROS Japan Dev会議への参加が一番！
– 本線に入れるかの判断を，ROSに詳しい開発者と議論できる
– ROS PMCの藤田さんと気軽に話せ，他のPMCへの連絡（REP時に必要）も円滑
19/20


# Page. 20

![Page Image](https://bcdn.docswell.com/page/47ZL4MQMJ3.jpg)

まとめ
◼ros2log
– ROS2のログ制御を統合するCLI ros2logを開発
• /rosoutトピックのライブログをオプションでフィルタ
• ノード単位でログレベル変更
– 今後の展望
• logger名を列挙するAPIを追加し，
`describe`サブコマンドとchild loggerの制御にも対応
◼REP
– OSRA管轄のOSSプロジェクトに対する機能強化を説明する文書
• ros2logもREP-0156で提案中(Status: Draft)
– 今後の展望
• 開発をすべて完了し，ROS PMCにREPの承認を依頼&amp;開発物を全てマージ
20/20


