1.ログレベル
同様のログメッセージは、5つの異なる重要度マクロの定義、およびアンドロイド、以下の基本的なマクロの重症度にログインします。
ROS_DEBUG_STREAM、ROS_INFO_STREAM、ROS_WARN_STREAM、ROS_ERROR_STREAM、ROS_FATAL_STREAM(高低深刻な手続きレベルの並べ替え、に従って)
C ++ 代码: の#include <ROS / ros.h> int型のmain(int型 ARGC、チャー ** ARGV){ ROS :: INIT(ARGC、ARGV、" hello_ros " )。 ROS :: NodeHandle NH; ROS_DEBUG_STREAM(" ログDEBUG " ); ROS_INFO_STREAM(" ログINFO " ); ROS_WARN_STREAM(" ログWARN " ); ROS_ERROR_STREAM(" ログERROR " ); ROS_FATAL_STREAM(「FATALログ " ); }
実行中の結果から、あなたはなぜ、DEBUGが印刷されないことがわかりますか?穏やかな、4お答えします
2.サイクル単一のログ
最初は、ジャーナルループ反復で印刷されますログに代わって、マクロベースの後ろ_ONCEを追加します。
C ++ 代码: の#include <ROS / ros.h> int型のmain(int型 ARGC、チャー ** ARGV){ ROS :: INIT(ARGC、ARGV、" hello_ros " )。 ROS :: NodeHandle NH; 以下のために(int型 i = 0 ; iは< 10 I ++; ){ ROS_INFO_STREAM_ONCEは(" 情報I =ログイン" << i)を、もし(I> = 2 ){ ROS_INFO_STREAM_ONCE(" 情報I =ログイン" << i)を、 } } }
3.周波数ログイン
バック追加_THROTTLEマクロ基地周波数は、単位時間当たりの時間量は、2つのログの出現との間の最小時間間隔を示しROS_INFO_STREAM_THROTTLE(間隔、メッセージ)、秒間隔の第1のパラメータの代表にログインなります
4.オープン、クローズログ
1 DEBUGログ情報に言及したが、C ++プログラムのため、デフォルトのログレベルは、INFO、DEBUGログすべてが無視されている、そして、どのようにDEBUGレベルを開くためにしている問題は、それを記録し、出力されませんか?
rosserviceコール/ノード名/ set_logger_level ros.package- 名レベル
C ++ 代码: の#include <ROS / ros.h> int型のmain(int型 ARGC、チャー ** ARGV){ ROS :: INIT(ARGC、ARGV、" hello_ros " ); ROS :: NodeHandle NH; 一方、(ROS :: OK()){ ROS_DEBUG_STREAM(" ログDEBUG " )。 ROS_INFO_STREAM(" ログINFO " ); ROS_WARN_STREAM(" ログWARN " ); ROS_ERROR_STREAM("エラーログ" ); ROS_FATAL_STREAM(" FATALログ" ); } } 次にブート上位ノード、及び端末呼rosservice実行 / hello_ros / set_logger_level ros.hello DEBUGを
転送します。https://www.jianshu.com/p/b360728ad6d1