27 class ROSOutStreamBuffer :
public std::stringbuf
41 explicit ROSOutStreamBuffer(Type type)
47 std::string log = str();
48 if (!log.empty() && log.back() ==
'\n')
56 ROS_DEBUG(
"%s%s", prefix_.c_str(), log.c_str());
59 ROS_INFO(
"%s%s", prefix_.c_str(), log.c_str());
62 ROS_WARN(
"%s%s", prefix_.c_str(), log.c_str());
65 ROS_ERROR(
"%s%s", prefix_.c_str(), log.c_str());
68 ROS_FATAL(
"%s%s", prefix_.c_str(), log.c_str());
81 std::cout << prefix_ << log << std::endl;
85 std::cerr << prefix_ << log << std::endl;
93 void setPrefix(
const std::string& prefix)
99 ROSOutStreamBuffer debug_buf(ROSOutStreamBuffer::LOG_DEBUG);
100 ROSOutStreamBuffer info_buf(ROSOutStreamBuffer::LOG_INFO);
101 ROSOutStreamBuffer warn_buf(ROSOutStreamBuffer::LOG_WARN);
102 ROSOutStreamBuffer error_buf(ROSOutStreamBuffer::LOG_ERROR);
103 ROSOutStreamBuffer fatal_buf(ROSOutStreamBuffer::LOG_FATAL);
104 std::ostream debug_logger(&debug_buf);
105 std::ostream info_logger(&info_buf);
106 std::ostream warn_logger(&warn_buf);
107 std::ostream error_logger(&error_buf);
108 std::ostream fatal_logger(&fatal_buf);
115 debug_buf.setPrefix(prefix);
116 info_buf.setPrefix(prefix);
117 warn_buf.setPrefix(prefix);
118 error_buf.setPrefix(prefix);
119 fatal_buf.setPrefix(prefix);