ROS 2 rclcpp + rcl - rolling  rolling-b14af74a
ROS 2 C++ Client Library with ROS Client Library
logging.hpp
1 // Copyright 2017 Open Source Robotics Foundation, Inc.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #ifndef RCLCPP__LOGGING_HPP_
16 #define RCLCPP__LOGGING_HPP_
17 
18 #include <sstream>
19 #include <type_traits>
20 
21 #include "rclcpp/logger.hpp"
22 #include "rcutils/logging_macros.h"
23 
24 // These are used for compiling out logging macros lower than a minimum severity.
25 #define RCLCPP_LOG_MIN_SEVERITY_DEBUG 0
26 #define RCLCPP_LOG_MIN_SEVERITY_INFO 1
27 #define RCLCPP_LOG_MIN_SEVERITY_WARN 2
28 #define RCLCPP_LOG_MIN_SEVERITY_ERROR 3
29 #define RCLCPP_LOG_MIN_SEVERITY_FATAL 4
30 #define RCLCPP_LOG_MIN_SEVERITY_NONE 5
31 
32 #define RCLCPP_STATIC_ASSERT_LOGGER(logger) \
33  do { \
34  static_assert( \
35  ::std::is_convertible_v<decltype(logger), ::rclcpp::Logger>, \
36  "First argument to logging macros must be an rclcpp::Logger"); \
37  } while (0)
38 
45 #define RCLCPP_LOG(severity, logger, ...) \
46  do { \
47  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
48  RCUTILS_LOG_NAMED(severity, (logger).get_name(), __VA_ARGS__); \
49  } while (0)
50 
59 #define RCLCPP_LOG_ONCE(severity, logger, ...) \
60  do { \
61  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
62  RCUTILS_LOG_ONCE_NAMED(severity, (logger).get_name(), __VA_ARGS__); \
63  } while (0)
64 
74 #define RCLCPP_LOG_EXPRESSION(severity, logger, expression, ...) \
75  do { \
76  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
77  RCUTILS_LOG_EXPRESSION_NAMED(severity, expression, (logger).get_name(), __VA_ARGS__); \
78  } while (0)
79 
89 #define RCLCPP_LOG_FUNCTION(severity, logger, function, ...) \
90  do { \
91  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
92  RCUTILS_LOG_FUNCTION_NAMED(severity, function, (logger).get_name(), __VA_ARGS__); \
93  } while (0)
94 
103 #define RCLCPP_LOG_SKIPFIRST(severity, logger, ...) \
104  do { \
105  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
106  RCUTILS_LOG_SKIPFIRST_NAMED(severity, (logger).get_name(), __VA_ARGS__); \
107  } while (0)
108 
109 #define RCLCPP_LOG_TIME_POINT_FUNC(clock) \
110  [&c = clock](rcutils_time_point_value_t * time_point)->rcutils_ret_t { \
111  try { \
112  *time_point = c.now().nanoseconds(); \
113  } catch (...) { \
114  RCUTILS_SAFE_FWRITE_TO_STDERR( \
115  "[rclcpp|logging.hpp] RCLCPP_DEBUG_THROTTLE could not get current time stamp\n"); \
116  return RCUTILS_RET_ERROR; \
117  } \
118  return RCUTILS_RET_OK; \
119  }
120 
131 #define RCLCPP_LOG_THROTTLE(severity, logger, clock, duration, ...) \
132  do { \
133  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
134  RCUTILS_LOG_THROTTLE_NAMED( \
135  severity, \
136  RCLCPP_LOG_TIME_POINT_FUNC(clock), \
137  duration, \
138  (logger).get_name(), \
139  __VA_ARGS__); \
140  } while (0)
141 
153 #define RCLCPP_LOG_SKIPFIRST_THROTTLE(severity, logger, clock, duration, ...) \
154  do { \
155  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
156  RCUTILS_LOG_SKIPFIRST_THROTTLE_NAMED( \
157  severity, \
158  RCLCPP_LOG_TIME_POINT_FUNC(clock), \
159  duration, \
160  (logger).get_name(), \
161  __VA_ARGS__); \
162  } while (0)
163 
171 #define RCLCPP_LOG_STREAM(severity, logger, stream_arg) \
172  do { \
173  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
174  std::stringstream rclcpp_stream_ss_; \
175  rclcpp_stream_ss_ << stream_arg; \
176  RCUTILS_LOG_NAMED(severity, (logger).get_name(), "%s", rclcpp_stream_ss_.str().c_str()); \
177  } while (0)
178 
187 #define RCLCPP_LOG_STREAM_ONCE(severity, logger, stream_arg) \
188  do { \
189  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
190  std::stringstream rclcpp_stream_ss_; \
191  rclcpp_stream_ss_ << stream_arg; \
192  RCUTILS_LOG_ONCE_NAMED(severity, (logger).get_name(), "%s", rclcpp_stream_ss_.str().c_str()); \
193  } while (0)
194 
204 #define RCLCPP_LOG_STREAM_EXPRESSION(severity, logger, expression, stream_arg) \
205  do { \
206  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
207  std::stringstream rclcpp_stream_ss_; \
208  rclcpp_stream_ss_ << stream_arg; \
209  RCUTILS_LOG_EXPRESSION_NAMED( \
210  severity, \
211  expression, \
212  (logger).get_name(), \
213  "%s", rclcpp_stream_ss_.str().c_str()); \
214  } while (0)
215 
225 #define RCLCPP_LOG_STREAM_FUNCTION(severity, logger, function, stream_arg) \
226  do { \
227  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
228  std::stringstream rclcpp_stream_ss_; \
229  rclcpp_stream_ss_ << stream_arg; \
230  RCUTILS_LOG_FUNCTION_NAMED( \
231  severity, \
232  function, \
233  (logger).get_name(), \
234  "%s", rclcpp_stream_ss_.str().c_str()); \
235  } while (0)
236 
245 #define RCLCPP_LOG_STREAM_SKIPFIRST(severity, logger, stream_arg) \
246  do { \
247  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
248  std::stringstream rclcpp_stream_ss_; \
249  rclcpp_stream_ss_ << stream_arg; \
250  RCUTILS_LOG_SKIPFIRST_NAMED( \
251  severity, \
252  (logger).get_name(), \
253  "%s", rclcpp_stream_ss_.str().c_str()); \
254  } while (0)
255 
266 #define RCLCPP_LOG_STREAM_THROTTLE(severity, logger, clock, duration, stream_arg) \
267  do { \
268  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
269  std::stringstream rclcpp_stream_ss_; \
270  rclcpp_stream_ss_ << stream_arg; \
271  RCUTILS_LOG_THROTTLE_NAMED( \
272  severity, \
273  RCLCPP_LOG_TIME_POINT_FUNC(clock), \
274  duration, \
275  (logger).get_name(), \
276  "%s", rclcpp_stream_ss_.str().c_str()); \
277  } while (0)
278 
290 #define RCLCPP_LOG_STREAM_SKIPFIRST_THROTTLE(severity, logger, clock, duration, stream_arg) \
291  do { \
292  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
293  std::stringstream rclcpp_stream_ss_; \
294  rclcpp_stream_ss_ << stream_arg; \
295  RCUTILS_LOG_SKIPFIRST_THROTTLE_NAMED( \
296  severity, \
297  RCLCPP_LOG_TIME_POINT_FUNC(clock), \
298  duration, \
299  (logger).get_name(), \
300  "%s", rclcpp_stream_ss_.str().c_str()); \
301  } while (0)
302 
309 #ifndef RCLCPP_LOG_MIN_SEVERITY
310 #define RCLCPP_LOG_MIN_SEVERITY RCLCPP_LOG_MIN_SEVERITY_DEBUG
311 #endif
312 
315 #if (RCLCPP_LOG_MIN_SEVERITY > RCLCPP_LOG_MIN_SEVERITY_DEBUG)
316 // empty logging macros for severity DEBUG when being disabled at compile time
318 #define RCLCPP_DEBUG(...)
320 #define RCLCPP_DEBUG_ONCE(...)
322 #define RCLCPP_DEBUG_EXPRESSION(...)
324 #define RCLCPP_DEBUG_FUNCTION(...)
326 #define RCLCPP_DEBUG_SKIPFIRST(...)
328 #define RCLCPP_DEBUG_THROTTLE(...)
330 #define RCLCPP_DEBUG_SKIPFIRST_THROTTLE(...)
332 #define RCLCPP_DEBUG_STREAM(...)
334 #define RCLCPP_DEBUG_STREAM_ONCE(...)
336 #define RCLCPP_DEBUG_STREAM_EXPRESSION(...)
338 #define RCLCPP_DEBUG_STREAM_FUNCTION(...)
340 #define RCLCPP_DEBUG_STREAM_SKIPFIRST(...)
342 #define RCLCPP_DEBUG_STREAM_THROTTLE(...)
344 #define RCLCPP_DEBUG_STREAM_SKIPFIRST_THROTTLE(...)
345 
346 #else
351 #define RCLCPP_DEBUG(logger, ...) RCLCPP_LOG(RCUTILS_LOG_SEVERITY_DEBUG, logger, __VA_ARGS__)
352 
357 #define RCLCPP_DEBUG_ONCE(logger, ...) \
358  RCLCPP_LOG_ONCE(RCUTILS_LOG_SEVERITY_DEBUG, logger, __VA_ARGS__)
359 
364 #define RCLCPP_DEBUG_EXPRESSION(logger, expression, ...) \
365  RCLCPP_LOG_EXPRESSION(RCUTILS_LOG_SEVERITY_DEBUG, logger, expression, __VA_ARGS__)
366 
371 #define RCLCPP_DEBUG_FUNCTION(logger, function, ...) \
372  RCLCPP_LOG_FUNCTION(RCUTILS_LOG_SEVERITY_DEBUG, logger, function, __VA_ARGS__)
373 
378 #define RCLCPP_DEBUG_SKIPFIRST(logger, ...) \
379  RCLCPP_LOG_SKIPFIRST(RCUTILS_LOG_SEVERITY_DEBUG, logger, __VA_ARGS__)
380 
385 #define RCLCPP_DEBUG_THROTTLE(logger, clock, duration, ...) \
386  RCLCPP_LOG_THROTTLE(RCUTILS_LOG_SEVERITY_DEBUG, logger, clock, duration, __VA_ARGS__)
387 
392 #define RCLCPP_DEBUG_SKIPFIRST_THROTTLE(logger, clock, duration, ...) \
393  RCLCPP_LOG_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_DEBUG, logger, clock, duration, __VA_ARGS__)
394 
399 #define RCLCPP_DEBUG_STREAM(logger, stream_arg) \
400  RCLCPP_LOG_STREAM(RCUTILS_LOG_SEVERITY_DEBUG, logger, stream_arg)
401 
406 #define RCLCPP_DEBUG_STREAM_ONCE(logger, stream_arg) \
407  RCLCPP_LOG_STREAM_ONCE(RCUTILS_LOG_SEVERITY_DEBUG, logger, stream_arg)
408 
413 #define RCLCPP_DEBUG_STREAM_EXPRESSION(logger, expression, stream_arg) \
414  RCLCPP_LOG_STREAM_EXPRESSION(RCUTILS_LOG_SEVERITY_DEBUG, logger, expression, stream_arg)
415 
420 #define RCLCPP_DEBUG_STREAM_FUNCTION(logger, function, stream_arg) \
421  RCLCPP_LOG_STREAM_FUNCTION(RCUTILS_LOG_SEVERITY_DEBUG, logger, function, stream_args)
422 
427 #define RCLCPP_DEBUG_STREAM_SKIPFIRST(logger, stream_arg) \
428  RCLCPP_LOG_STREAM_SKIPFIRST(RCUTILS_LOG_SEVERITY_DEBUG, logger, stream_arg)
429 
434 #define RCLCPP_DEBUG_STREAM_THROTTLE(logger, clock, duration, stream_arg) \
435  RCLCPP_LOG_STREAM_THROTTLE(RCUTILS_LOG_SEVERITY_DEBUG, logger, clock, duration, stream_arg)
436 
441 #define RCLCPP_DEBUG_STREAM_SKIPFIRST_THROTTLE(logger, clock, duration, stream_arg) \
442  RCLCPP_LOG_STREAM_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_DEBUG, logger, clock, duration, \
443  stream_arg)
444 
445 #endif
446 
449 #if (RCLCPP_LOG_MIN_SEVERITY > RCLCPP_LOG_MIN_SEVERITY_INFO)
450 // empty logging macros for severity INFO when being disabled at compile time
452 #define RCLCPP_INFO(...)
454 #define RCLCPP_INFO_ONCE(...)
456 #define RCLCPP_INFO_EXPRESSION(...)
458 #define RCLCPP_INFO_FUNCTION(...)
460 #define RCLCPP_INFO_SKIPFIRST(...)
462 #define RCLCPP_INFO_THROTTLE(...)
464 #define RCLCPP_INFO_SKIPFIRST_THROTTLE(...)
466 #define RCLCPP_INFO_STREAM(...)
468 #define RCLCPP_INFO_STREAM_ONCE(...)
470 #define RCLCPP_INFO_STREAM_EXPRESSION(...)
472 #define RCLCPP_INFO_STREAM_FUNCTION(...)
474 #define RCLCPP_INFO_STREAM_SKIPFIRST(...)
476 #define RCLCPP_INFO_STREAM_THROTTLE(...)
478 #define RCLCPP_INFO_STREAM_SKIPFIRST_THROTTLE(...)
479 
480 #else
485 #define RCLCPP_INFO(logger, ...) RCLCPP_LOG(RCUTILS_LOG_SEVERITY_INFO, logger, __VA_ARGS__)
486 
491 #define RCLCPP_INFO_ONCE(logger, ...) \
492  RCLCPP_LOG_ONCE(RCUTILS_LOG_SEVERITY_INFO, logger, __VA_ARGS__)
493 
498 #define RCLCPP_INFO_EXPRESSION(logger, expression, ...) \
499  RCLCPP_LOG_EXPRESSION(RCUTILS_LOG_SEVERITY_INFO, logger, expression, __VA_ARGS__)
500 
505 #define RCLCPP_INFO_FUNCTION(logger, function, ...) \
506  RCLCPP_LOG_FUNCTION(RCUTILS_LOG_SEVERITY_INFO, logger, function, __VA_ARGS__)
507 
512 #define RCLCPP_INFO_SKIPFIRST(logger, ...) \
513  RCLCPP_LOG_SKIPFIRST(RCUTILS_LOG_SEVERITY_INFO, logger, __VA_ARGS__)
514 
519 #define RCLCPP_INFO_THROTTLE(logger, clock, duration, ...) \
520  RCLCPP_LOG_THROTTLE(RCUTILS_LOG_SEVERITY_INFO, logger, clock, duration, __VA_ARGS__)
521 
526 #define RCLCPP_INFO_SKIPFIRST_THROTTLE(logger, clock, duration, ...) \
527  RCLCPP_LOG_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_INFO, logger, clock, duration, __VA_ARGS__)
528 
533 #define RCLCPP_INFO_STREAM(logger, stream_arg) \
534  RCLCPP_LOG_STREAM(RCUTILS_LOG_SEVERITY_INFO, logger, stream_arg)
535 
540 #define RCLCPP_INFO_STREAM_ONCE(logger, stream_arg) \
541  RCLCPP_LOG_STREAM_ONCE(RCUTILS_LOG_SEVERITY_INFO, logger, stream_arg)
542 
547 #define RCLCPP_INFO_STREAM_EXPRESSION(logger, expression, stream_arg) \
548  RCLCPP_LOG_STREAM_EXPRESSION(RCUTILS_LOG_SEVERITY_INFO, logger, expression, stream_arg)
549 
554 #define RCLCPP_INFO_STREAM_FUNCTION(logger, function, stream_arg) \
555  RCLCPP_LOG_STREAM_FUNCTION(RCUTILS_LOG_SEVERITY_INFO, logger, function, stream_args)
556 
561 #define RCLCPP_INFO_STREAM_SKIPFIRST(logger, stream_arg) \
562  RCLCPP_LOG_STREAM_SKIPFIRST(RCUTILS_LOG_SEVERITY_INFO, logger, stream_arg)
563 
568 #define RCLCPP_INFO_STREAM_THROTTLE(logger, clock, duration, stream_arg) \
569  RCLCPP_LOG_STREAM_THROTTLE(RCUTILS_LOG_SEVERITY_INFO, logger, clock, duration, stream_arg)
570 
575 #define RCLCPP_INFO_STREAM_SKIPFIRST_THROTTLE(logger, clock, duration, stream_arg) \
576  RCLCPP_LOG_STREAM_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_INFO, logger, clock, duration, \
577  stream_arg)
578 
579 #endif
580 
583 #if (RCLCPP_LOG_MIN_SEVERITY > RCLCPP_LOG_MIN_SEVERITY_WARN)
584 // empty logging macros for severity WARN when being disabled at compile time
586 #define RCLCPP_WARN(...)
588 #define RCLCPP_WARN_ONCE(...)
590 #define RCLCPP_WARN_EXPRESSION(...)
592 #define RCLCPP_WARN_FUNCTION(...)
594 #define RCLCPP_WARN_SKIPFIRST(...)
596 #define RCLCPP_WARN_THROTTLE(...)
598 #define RCLCPP_WARN_SKIPFIRST_THROTTLE(...)
600 #define RCLCPP_WARN_STREAM(...)
602 #define RCLCPP_WARN_STREAM_ONCE(...)
604 #define RCLCPP_WARN_STREAM_EXPRESSION(...)
606 #define RCLCPP_WARN_STREAM_FUNCTION(...)
608 #define RCLCPP_WARN_STREAM_SKIPFIRST(...)
610 #define RCLCPP_WARN_STREAM_THROTTLE(...)
612 #define RCLCPP_WARN_STREAM_SKIPFIRST_THROTTLE(...)
613 
614 #else
619 #define RCLCPP_WARN(logger, ...) RCLCPP_LOG(RCUTILS_LOG_SEVERITY_WARN, logger, __VA_ARGS__)
620 
625 #define RCLCPP_WARN_ONCE(logger, ...) \
626  RCLCPP_LOG_ONCE(RCUTILS_LOG_SEVERITY_WARN, logger, __VA_ARGS__)
627 
632 #define RCLCPP_WARN_EXPRESSION(logger, expression, ...) \
633  RCLCPP_LOG_EXPRESSION(RCUTILS_LOG_SEVERITY_WARN, logger, expression, __VA_ARGS__)
634 
639 #define RCLCPP_WARN_FUNCTION(logger, function, ...) \
640  RCLCPP_LOG_FUNCTION(RCUTILS_LOG_SEVERITY_WARN, logger, function, __VA_ARGS__)
641 
646 #define RCLCPP_WARN_SKIPFIRST(logger, ...) \
647  RCLCPP_LOG_SKIPFIRST(RCUTILS_LOG_SEVERITY_WARN, logger, __VA_ARGS__)
648 
653 #define RCLCPP_WARN_THROTTLE(logger, clock, duration, ...) \
654  RCLCPP_LOG_THROTTLE(RCUTILS_LOG_SEVERITY_WARN, logger, clock, duration, __VA_ARGS__)
655 
660 #define RCLCPP_WARN_SKIPFIRST_THROTTLE(logger, clock, duration, ...) \
661  RCLCPP_LOG_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_WARN, logger, clock, duration, __VA_ARGS__)
662 
667 #define RCLCPP_WARN_STREAM(logger, stream_arg) \
668  RCLCPP_LOG_STREAM(RCUTILS_LOG_SEVERITY_WARN, logger, stream_arg)
669 
674 #define RCLCPP_WARN_STREAM_ONCE(logger, stream_arg) \
675  RCLCPP_LOG_STREAM_ONCE(RCUTILS_LOG_SEVERITY_WARN, logger, stream_arg)
676 
681 #define RCLCPP_WARN_STREAM_EXPRESSION(logger, expression, stream_arg) \
682  RCLCPP_LOG_STREAM_EXPRESSION(RCUTILS_LOG_SEVERITY_WARN, logger, expression, stream_arg)
683 
688 #define RCLCPP_WARN_STREAM_FUNCTION(logger, function, stream_arg) \
689  RCLCPP_LOG_STREAM_FUNCTION(RCUTILS_LOG_SEVERITY_WARN, logger, function, stream_args)
690 
695 #define RCLCPP_WARN_STREAM_SKIPFIRST(logger, stream_arg) \
696  RCLCPP_LOG_STREAM_SKIPFIRST(RCUTILS_LOG_SEVERITY_WARN, logger, stream_arg)
697 
702 #define RCLCPP_WARN_STREAM_THROTTLE(logger, clock, duration, stream_arg) \
703  RCLCPP_LOG_STREAM_THROTTLE(RCUTILS_LOG_SEVERITY_WARN, logger, clock, duration, stream_arg)
704 
709 #define RCLCPP_WARN_STREAM_SKIPFIRST_THROTTLE(logger, clock, duration, stream_arg) \
710  RCLCPP_LOG_STREAM_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_WARN, logger, clock, duration, \
711  stream_arg)
712 
713 #endif
714 
717 #if (RCLCPP_LOG_MIN_SEVERITY > RCLCPP_LOG_MIN_SEVERITY_ERROR)
718 // empty logging macros for severity ERROR when being disabled at compile time
720 #define RCLCPP_ERROR(...)
722 #define RCLCPP_ERROR_ONCE(...)
724 #define RCLCPP_ERROR_EXPRESSION(...)
726 #define RCLCPP_ERROR_FUNCTION(...)
728 #define RCLCPP_ERROR_SKIPFIRST(...)
730 #define RCLCPP_ERROR_THROTTLE(...)
732 #define RCLCPP_ERROR_SKIPFIRST_THROTTLE(...)
734 #define RCLCPP_ERROR_STREAM(...)
736 #define RCLCPP_ERROR_STREAM_ONCE(...)
738 #define RCLCPP_ERROR_STREAM_EXPRESSION(...)
740 #define RCLCPP_ERROR_STREAM_FUNCTION(...)
742 #define RCLCPP_ERROR_STREAM_SKIPFIRST(...)
744 #define RCLCPP_ERROR_STREAM_THROTTLE(...)
746 #define RCLCPP_ERROR_STREAM_SKIPFIRST_THROTTLE(...)
747 
748 #else
753 #define RCLCPP_ERROR(logger, ...) RCLCPP_LOG(RCUTILS_LOG_SEVERITY_ERROR, logger, __VA_ARGS__)
754 
759 #define RCLCPP_ERROR_ONCE(logger, ...) \
760  RCLCPP_LOG_ONCE(RCUTILS_LOG_SEVERITY_ERROR, logger, __VA_ARGS__)
761 
766 #define RCLCPP_ERROR_EXPRESSION(logger, expression, ...) \
767  RCLCPP_LOG_EXPRESSION(RCUTILS_LOG_SEVERITY_ERROR, logger, expression, __VA_ARGS__)
768 
773 #define RCLCPP_ERROR_FUNCTION(logger, function, ...) \
774  RCLCPP_LOG_FUNCTION(RCUTILS_LOG_SEVERITY_ERROR, logger, function, __VA_ARGS__)
775 
780 #define RCLCPP_ERROR_SKIPFIRST(logger, ...) \
781  RCLCPP_LOG_SKIPFIRST(RCUTILS_LOG_SEVERITY_ERROR, logger, __VA_ARGS__)
782 
787 #define RCLCPP_ERROR_THROTTLE(logger, clock, duration, ...) \
788  RCLCPP_LOG_THROTTLE(RCUTILS_LOG_SEVERITY_ERROR, logger, clock, duration, __VA_ARGS__)
789 
794 #define RCLCPP_ERROR_SKIPFIRST_THROTTLE(logger, clock, duration, ...) \
795  RCLCPP_LOG_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_ERROR, logger, clock, duration, __VA_ARGS__)
796 
801 #define RCLCPP_ERROR_STREAM(logger, stream_arg) \
802  RCLCPP_LOG_STREAM(RCUTILS_LOG_SEVERITY_ERROR, logger, stream_arg)
803 
808 #define RCLCPP_ERROR_STREAM_ONCE(logger, stream_arg) \
809  RCLCPP_LOG_STREAM_ONCE(RCUTILS_LOG_SEVERITY_ERROR, logger, stream_arg)
810 
815 #define RCLCPP_ERROR_STREAM_EXPRESSION(logger, expression, stream_arg) \
816  RCLCPP_LOG_STREAM_EXPRESSION(RCUTILS_LOG_SEVERITY_ERROR, logger, expression, stream_arg)
817 
822 #define RCLCPP_ERROR_STREAM_FUNCTION(logger, function, stream_arg) \
823  RCLCPP_LOG_STREAM_FUNCTION(RCUTILS_LOG_SEVERITY_ERROR, logger, function, stream_args)
824 
829 #define RCLCPP_ERROR_STREAM_SKIPFIRST(logger, stream_arg) \
830  RCLCPP_LOG_STREAM_SKIPFIRST(RCUTILS_LOG_SEVERITY_ERROR, logger, stream_arg)
831 
836 #define RCLCPP_ERROR_STREAM_THROTTLE(logger, clock, duration, stream_arg) \
837  RCLCPP_LOG_STREAM_THROTTLE(RCUTILS_LOG_SEVERITY_ERROR, logger, clock, duration, stream_arg)
838 
843 #define RCLCPP_ERROR_STREAM_SKIPFIRST_THROTTLE(logger, clock, duration, stream_arg) \
844  RCLCPP_LOG_STREAM_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_ERROR, logger, clock, duration, \
845  stream_arg)
846 
847 #endif
848 
851 #if (RCLCPP_LOG_MIN_SEVERITY > RCLCPP_LOG_MIN_SEVERITY_FATAL)
852 // empty logging macros for severity FATAL when being disabled at compile time
854 #define RCLCPP_FATAL(...)
856 #define RCLCPP_FATAL_ONCE(...)
858 #define RCLCPP_FATAL_EXPRESSION(...)
860 #define RCLCPP_FATAL_FUNCTION(...)
862 #define RCLCPP_FATAL_SKIPFIRST(...)
864 #define RCLCPP_FATAL_THROTTLE(...)
866 #define RCLCPP_FATAL_SKIPFIRST_THROTTLE(...)
868 #define RCLCPP_FATAL_STREAM(...)
870 #define RCLCPP_FATAL_STREAM_ONCE(...)
872 #define RCLCPP_FATAL_STREAM_EXPRESSION(...)
874 #define RCLCPP_FATAL_STREAM_FUNCTION(...)
876 #define RCLCPP_FATAL_STREAM_SKIPFIRST(...)
878 #define RCLCPP_FATAL_STREAM_THROTTLE(...)
880 #define RCLCPP_FATAL_STREAM_SKIPFIRST_THROTTLE(...)
881 
882 #else
887 #define RCLCPP_FATAL(logger, ...) RCLCPP_LOG(RCUTILS_LOG_SEVERITY_FATAL, logger, __VA_ARGS__)
888 
893 #define RCLCPP_FATAL_ONCE(logger, ...) \
894  RCLCPP_LOG_ONCE(RCUTILS_LOG_SEVERITY_FATAL, logger, __VA_ARGS__)
895 
900 #define RCLCPP_FATAL_EXPRESSION(logger, expression, ...) \
901  RCLCPP_LOG_EXPRESSION(RCUTILS_LOG_SEVERITY_FATAL, logger, expression, __VA_ARGS__)
902 
907 #define RCLCPP_FATAL_FUNCTION(logger, function, ...) \
908  RCLCPP_LOG_FUNCTION(RCUTILS_LOG_SEVERITY_FATAL, logger, function, __VA_ARGS__)
909 
914 #define RCLCPP_FATAL_SKIPFIRST(logger, ...) \
915  RCLCPP_LOG_SKIPFIRST(RCUTILS_LOG_SEVERITY_FATAL, logger, __VA_ARGS__)
916 
921 #define RCLCPP_FATAL_THROTTLE(logger, clock, duration, ...) \
922  RCLCPP_LOG_THROTTLE(RCUTILS_LOG_SEVERITY_FATAL, logger, clock, duration, __VA_ARGS__)
923 
928 #define RCLCPP_FATAL_SKIPFIRST_THROTTLE(logger, clock, duration, ...) \
929  RCLCPP_LOG_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_FATAL, logger, clock, duration, __VA_ARGS__)
930 
935 #define RCLCPP_FATAL_STREAM(logger, stream_arg) \
936  RCLCPP_LOG_STREAM(RCUTILS_LOG_SEVERITY_FATAL, logger, stream_arg)
937 
942 #define RCLCPP_FATAL_STREAM_ONCE(logger, stream_arg) \
943  RCLCPP_LOG_STREAM_ONCE(RCUTILS_LOG_SEVERITY_FATAL, logger, stream_arg)
944 
949 #define RCLCPP_FATAL_STREAM_EXPRESSION(logger, expression, stream_arg) \
950  RCLCPP_LOG_STREAM_EXPRESSION(RCUTILS_LOG_SEVERITY_FATAL, logger, expression, stream_arg)
951 
956 #define RCLCPP_FATAL_STREAM_FUNCTION(logger, function, stream_arg) \
957  RCLCPP_LOG_STREAM_FUNCTION(RCUTILS_LOG_SEVERITY_FATAL, logger, function, stream_args)
958 
963 #define RCLCPP_FATAL_STREAM_SKIPFIRST(logger, stream_arg) \
964  RCLCPP_LOG_STREAM_SKIPFIRST(RCUTILS_LOG_SEVERITY_FATAL, logger, stream_arg)
965 
970 #define RCLCPP_FATAL_STREAM_THROTTLE(logger, clock, duration, stream_arg) \
971  RCLCPP_LOG_STREAM_THROTTLE(RCUTILS_LOG_SEVERITY_FATAL, logger, clock, duration, stream_arg)
972 
977 #define RCLCPP_FATAL_STREAM_SKIPFIRST_THROTTLE(logger, clock, duration, stream_arg) \
978  RCLCPP_LOG_STREAM_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_FATAL, logger, clock, duration, \
979  stream_arg)
980 
981 #endif
982 
983 #endif // RCLCPP__LOGGING_HPP_