- 1. 概要
- 2. 種類(重大度)
- 3. 出力
- 4. 書式
- 5. 備考
1. 概要
ここまでのページで、既に、ログを使っていますが・・・、改めて。
2. 種類
「ROS」のログの種類には、下記のものがあります。
>
| 種類 | 値 | 備考 |
| UNKNOWN | 0 | |
| DEBUG | 10 | |
| INFO | 20 | |
| WARN | 30 | |
| ERROR | 40 | |
| FATAL | 50 | |
「UNKNOWN」というのは、わたしには、ちょっと目新しいものになります。
他は、値の設定の大小が異なったりはするもののおおむね、今までにさわってきた、他のシステムと同様です。
3. 出力
下記の書式になります。
「C++」で、書く場合。
RCLCPP_ERROR(rclcpp::get_logger("rclcpp"), "ログメッセージ", ...);
「RCLCPP_ERROR」の「ERROR」の箇所は、ログの種類によって書き換えます。
ログメッセージの中に、「printf()」と同じ書式で、書式付きの出力ができ、後ろに書式に対応する引数をいれます。
「python」で書く場合。
self.get_logger().info('ログメッセージ' % (...))
ログメッセージ内に、「C++」と同じ書式で、書式付きの出力ができます。
書式付きの出力を行わない場合は、「%」以降は、記述しません。
書式に対応する引数は、「%」の後ろに「()」で囲んで、「,」でつなげて記述します。
4. 書式
ログ自身の書式は、デフォルトで。
[{severity} {time}] [{name}]: {message}
となっています。
「severity」は種類(重大度)、「time」は出力日時、「name」は出力元のモジュール名、「message」がログメッセージになります。
これは、変更できます。
詳細は、ドキュメントを読むことになるかと思いますが。
デフォルトの出力日時は、「1735116567.012093777」てな感じで、人間が見ていて、いささかわかりにくい。
これを「YYYY-MM-DD HH:mm:ss.000」の形式へ変更するには、環境変数を設定します。
export RCUTILS_CONSOLE_OUTPUT_FORMAT="[{severity}] [{date_time_with_ms}] [{name}]: {message}"
5. 備考
本ページは、下記のサイトを参考にさせていただきました。
「Logging — ROS 2 Documentation: Rolling documentation」
「Logging and logger configuration — ROS 2 Documentation: Jazzy documentation」
「実習ROS 2 ROS 2 Logger #ROS2」
「ROS2 logging メモ」
参考サイトでは、わざわざロギング用のノードとかまで作成したりしていますが、そこまでしなくてもいいでしょう。
|
|