鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    ROS2的节点日志信息为什么做不到实时写入磁盘文件

    已定时 已固定 已锁定 已移动 已解决
    综合问题
    ros2 日志记录 ros2 launch
    2
    3
    704
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 12962578981
      南※先
      最后由 编辑

      如题,在我的实验测试过程中发现如下现象:
      1、直接用命令行启动 A_pkg 的A_node,即:ros2 run A_pkg A_node .
      此时A节点生成的日志信息不是实时存入节点对应的日志文件,而是在积累了一些日志信息以后才会统一的存入文件。这就会导致出现 当节点结束运行的时候,最后的一些日志信息没有被及时的存入日志文件,导致信息丢失。

      2、 使用launch文件启动节点,并且在launch文件中的 output 设置为 log 或者 both。
      此时 launch生成的一个属于自己的日志文件 它是能够做到实时记录任何日志或其他输出信息的,但是 节点日志依然做不到实时记录。

      所以我想请问的是:
      1、 我能否通过设置某些配置,做到节点的日志文件能实时地记录日志信息?我该怎么配置?
      2、如果做不到1,我能否关闭节点的日志配置,只保留launch的日志记录,该怎么关闭?

      小鱼小 1 条回复 最后回复 回复 引用 0
      • 小鱼小
        小鱼 技术大佬 @1296257898
        最后由 编辑

        @1296257898 ros2 的日志是基于 spdlog :https://github.com/gabime/spdlog 的,出现这一现象的原因应该是,为了提高存储效率,先放内存再放磁盘。
        建议操作方法有:

        1. 使用 /rosout 这个话题是实时输出的,直接记录它就行,节点数据都可以直接查询
        2. 使用 export RCUTILS_LOGGING_BUFFERED_STREAM=0 强制取消缓冲尝试
        3. 从源码入手:rcl_logging_spdlog 负责将日志放到磁盘:https://github.com/ros2/rcl_logging

        新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

        12962578981 1 条回复 最后回复 回复 引用 0
        • 12962578981
          南※先 @小鱼
          最后由 1296257898 编辑

          @小鱼 请问一下 你们做的基于ROS2的项目里,日志是用ROS2本身提供的,还是用其他的框架?有什么好用的日志框架推荐吗

          1 条回复 最后回复 回复 引用 0
          • 12962578981 1296257898 将这个主题标记为已解决,在
          • 第一个帖子
            最后一个帖子
          皖ICP备16016415号-7
          Powered by NodeBB | 鱼香ROS