在ROS2下编译机器人节点时,准备用log4cplus输出和存储日志,但在日志输出设置为STDOUT时,
用top -d 1 查看进程会发现有个ROS2进程CPU特别高,用strace -f -p PID查看,可以看到进程高的原因是ROS2在不断输出日志。
在.ros/log下查看日志文件,也能看到ros将log4cplus输出的日志重新保存了一遍,导致该问题。
解决:增加 --ros-args --disable-external-lib-logs
例如:
stdbuf -oL ros2 run robot_ctrl robotctrl --ros-args --disable-external-lib-logs > /dev/null