ROS 2 rclcpp + rcl - rolling  rolling-a919a6e5
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_same<typename std::remove_cv_t< \
36  typename std::remove_reference_t<decltype(logger)>>, \
37  typename ::rclcpp::Logger>::value, \
38  "First argument to logging macros must be an rclcpp::Logger"); \
39  } while (0)
40 
47 #define RCLCPP_LOG(severity, logger, ...) \
48  do { \
49  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
50  RCUTILS_LOG_NAMED(severity, (logger).get_name(), __VA_ARGS__); \
51  } while (0)
52 
61 #define RCLCPP_LOG_ONCE(severity, logger, ...) \
62  do { \
63  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
64  RCUTILS_LOG_ONCE_NAMED(severity, (logger).get_name(), __VA_ARGS__); \
65  } while (0)
66 
76 #define RCLCPP_LOG_EXPRESSION(severity, logger, expression, ...) \
77  do { \
78  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
79  RCUTILS_LOG_EXPRESSION_NAMED(severity, expression, (logger).get_name(), __VA_ARGS__); \
80  } while (0)
81 
91 #define RCLCPP_LOG_FUNCTION(severity, logger, function, ...) \
92  do { \
93  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
94  RCUTILS_LOG_FUNCTION_NAMED(severity, function, (logger).get_name(), __VA_ARGS__); \
95  } while (0)
96 
105 #define RCLCPP_LOG_SKIPFIRST(severity, logger, ...) \
106  do { \
107  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
108  RCUTILS_LOG_SKIPFIRST_NAMED(severity, (logger).get_name(), __VA_ARGS__); \
109  } while (0)
110 
111 #define RCLCPP_LOG_TIME_POINT_FUNC(clock) \
112  [&c = clock](rcutils_time_point_value_t * time_point)->rcutils_ret_t { \
113  try { \
114  *time_point = c.now().nanoseconds(); \
115  } catch (...) { \
116  RCUTILS_SAFE_FWRITE_TO_STDERR( \
117  "[rclcpp|logging.hpp] RCLCPP_DEBUG_THROTTLE could not get current time stamp\n"); \
118  return RCUTILS_RET_ERROR; \
119  } \
120  return RCUTILS_RET_OK; \
121  }
122 
133 #define RCLCPP_LOG_THROTTLE(severity, logger, clock, duration, ...) \
134  do { \
135  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
136  RCUTILS_LOG_THROTTLE_NAMED( \
137  severity, \
138  RCLCPP_LOG_TIME_POINT_FUNC(clock), \
139  duration, \
140  (logger).get_name(), \
141  __VA_ARGS__); \
142  } while (0)
143 
155 #define RCLCPP_LOG_SKIPFIRST_THROTTLE(severity, logger, clock, duration, ...) \
156  do { \
157  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
158  RCUTILS_LOG_SKIPFIRST_THROTTLE_NAMED( \
159  severity, \
160  RCLCPP_LOG_TIME_POINT_FUNC(clock), \
161  duration, \
162  (logger).get_name(), \
163  __VA_ARGS__); \
164  } while (0)
165 
173 #define RCLCPP_LOG_STREAM(severity, logger, stream_arg) \
174  do { \
175  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
176  std::stringstream rclcpp_stream_ss_; \
177  rclcpp_stream_ss_ << stream_arg; \
178  RCUTILS_LOG_NAMED(severity, (logger).get_name(), "%s", rclcpp_stream_ss_.str().c_str()); \
179  } while (0)
180 
189 #define RCLCPP_LOG_STREAM_ONCE(severity, logger, stream_arg) \
190  do { \
191  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
192  std::stringstream rclcpp_stream_ss_; \
193  rclcpp_stream_ss_ << stream_arg; \
194  RCUTILS_LOG_ONCE_NAMED(severity, (logger).get_name(), "%s", rclcpp_stream_ss_.str().c_str()); \
195  } while (0)
196 
206 #define RCLCPP_LOG_STREAM_EXPRESSION(severity, logger, expression, stream_arg) \
207  do { \
208  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
209  std::stringstream rclcpp_stream_ss_; \
210  rclcpp_stream_ss_ << stream_arg; \
211  RCUTILS_LOG_EXPRESSION_NAMED( \
212  severity, \
213  expression, \
214  (logger).get_name(), \
215  "%s", rclcpp_stream_ss_.str().c_str()); \
216  } while (0)
217 
227 #define RCLCPP_LOG_STREAM_FUNCTION(severity, logger, function, stream_arg) \
228  do { \
229  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
230  std::stringstream rclcpp_stream_ss_; \
231  rclcpp_stream_ss_ << stream_arg; \
232  RCUTILS_LOG_FUNCTION_NAMED( \
233  severity, \
234  function, \
235  (logger).get_name(), \
236  "%s", rclcpp_stream_ss_.str().c_str()); \
237  } while (0)
238 
247 #define RCLCPP_LOG_STREAM_SKIPFIRST(severity, logger, stream_arg) \
248  do { \
249  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
250  std::stringstream rclcpp_stream_ss_; \
251  rclcpp_stream_ss_ << stream_arg; \
252  RCUTILS_LOG_SKIPFIRST_NAMED( \
253  severity, \
254  (logger).get_name(), \
255  "%s", rclcpp_stream_ss_.str().c_str()); \
256  } while (0)
257 
268 #define RCLCPP_LOG_STREAM_THROTTLE(severity, logger, clock, duration, stream_arg) \
269  do { \
270  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
271  std::stringstream rclcpp_stream_ss_; \
272  rclcpp_stream_ss_ << stream_arg; \
273  RCUTILS_LOG_THROTTLE_NAMED( \
274  severity, \
275  RCLCPP_LOG_TIME_POINT_FUNC(clock), \
276  duration, \
277  (logger).get_name(), \
278  "%s", rclcpp_stream_ss_.str().c_str()); \
279  } while (0)
280 
292 #define RCLCPP_LOG_STREAM_SKIPFIRST_THROTTLE(severity, logger, clock, duration, stream_arg) \
293  do { \
294  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
295  std::stringstream rclcpp_stream_ss_; \
296  rclcpp_stream_ss_ << stream_arg; \
297  RCUTILS_LOG_SKIPFIRST_THROTTLE_NAMED( \
298  severity, \
299  RCLCPP_LOG_TIME_POINT_FUNC(clock), \
300  duration, \
301  (logger).get_name(), \
302  "%s", rclcpp_stream_ss_.str().c_str()); \
303  } while (0)
304 
311 #ifndef RCLCPP_LOG_MIN_SEVERITY
312 #define RCLCPP_LOG_MIN_SEVERITY RCLCPP_LOG_MIN_SEVERITY_DEBUG
313 #endif
314 
317 #if (RCLCPP_LOG_MIN_SEVERITY > RCLCPP_LOG_MIN_SEVERITY_DEBUG)
318 // empty logging macros for severity DEBUG when being disabled at compile time
320 #define RCLCPP_DEBUG(...)
322 #define RCLCPP_DEBUG_ONCE(...)
324 #define RCLCPP_DEBUG_EXPRESSION(...)
326 #define RCLCPP_DEBUG_FUNCTION(...)
328 #define RCLCPP_DEBUG_SKIPFIRST(...)
330 #define RCLCPP_DEBUG_THROTTLE(...)
332 #define RCLCPP_DEBUG_SKIPFIRST_THROTTLE(...)
334 #define RCLCPP_DEBUG_STREAM(...)
336 #define RCLCPP_DEBUG_STREAM_ONCE(...)
338 #define RCLCPP_DEBUG_STREAM_EXPRESSION(...)
340 #define RCLCPP_DEBUG_STREAM_FUNCTION(...)
342 #define RCLCPP_DEBUG_STREAM_SKIPFIRST(...)
344 #define RCLCPP_DEBUG_STREAM_THROTTLE(...)
346 #define RCLCPP_DEBUG_STREAM_SKIPFIRST_THROTTLE(...)
347 
348 #else
353 #define RCLCPP_DEBUG(logger, ...) RCLCPP_LOG(RCUTILS_LOG_SEVERITY_DEBUG, logger, __VA_ARGS__)
354 
359 #define RCLCPP_DEBUG_ONCE(logger, ...) \
360  RCLCPP_LOG_ONCE(RCUTILS_LOG_SEVERITY_DEBUG, logger, __VA_ARGS__)
361 
366 #define RCLCPP_DEBUG_EXPRESSION(logger, expression, ...) \
367  RCLCPP_LOG_EXPRESSION(RCUTILS_LOG_SEVERITY_DEBUG, logger, expression, __VA_ARGS__)
368 
373 #define RCLCPP_DEBUG_FUNCTION(logger, function, ...) \
374  RCLCPP_LOG_FUNCTION(RCUTILS_LOG_SEVERITY_DEBUG, logger, function, __VA_ARGS__)
375 
380 #define RCLCPP_DEBUG_SKIPFIRST(logger, ...) \
381  RCLCPP_LOG_SKIPFIRST(RCUTILS_LOG_SEVERITY_DEBUG, logger, __VA_ARGS__)
382 
387 #define RCLCPP_DEBUG_THROTTLE(logger, clock, duration, ...) \
388  RCLCPP_LOG_THROTTLE(RCUTILS_LOG_SEVERITY_DEBUG, logger, clock, duration, __VA_ARGS__)
389 
394 #define RCLCPP_DEBUG_SKIPFIRST_THROTTLE(logger, clock, duration, ...) \
395  RCLCPP_LOG_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_DEBUG, logger, clock, duration, __VA_ARGS__)
396 
401 #define RCLCPP_DEBUG_STREAM(logger, stream_arg) \
402  RCLCPP_LOG_STREAM(RCUTILS_LOG_SEVERITY_DEBUG, logger, stream_arg)
403 
408 #define RCLCPP_DEBUG_STREAM_ONCE(logger, stream_arg) \
409  RCLCPP_LOG_STREAM_ONCE(RCUTILS_LOG_SEVERITY_DEBUG, logger, stream_arg)
410 
415 #define RCLCPP_DEBUG_STREAM_EXPRESSION(logger, expression, stream_arg) \
416  RCLCPP_LOG_STREAM_EXPRESSION(RCUTILS_LOG_SEVERITY_DEBUG, logger, expression, stream_arg)
417 
422 #define RCLCPP_DEBUG_STREAM_FUNCTION(logger, function, stream_arg) \
423  RCLCPP_LOG_STREAM_FUNCTION(RCUTILS_LOG_SEVERITY_DEBUG, logger, function, stream_args)
424 
429 #define RCLCPP_DEBUG_STREAM_SKIPFIRST(logger, stream_arg) \
430  RCLCPP_LOG_STREAM_SKIPFIRST(RCUTILS_LOG_SEVERITY_DEBUG, logger, stream_arg)
431 
436 #define RCLCPP_DEBUG_STREAM_THROTTLE(logger, clock, duration, stream_arg) \
437  RCLCPP_LOG_STREAM_THROTTLE(RCUTILS_LOG_SEVERITY_DEBUG, logger, clock, duration, stream_arg)
438 
443 #define RCLCPP_DEBUG_STREAM_SKIPFIRST_THROTTLE(logger, clock, duration, stream_arg) \
444  RCLCPP_LOG_STREAM_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_DEBUG, logger, clock, duration, \
445  stream_arg)
446 
447 #endif
448 
451 #if (RCLCPP_LOG_MIN_SEVERITY > RCLCPP_LOG_MIN_SEVERITY_INFO)
452 // empty logging macros for severity INFO when being disabled at compile time
454 #define RCLCPP_INFO(...)
456 #define RCLCPP_INFO_ONCE(...)
458 #define RCLCPP_INFO_EXPRESSION(...)
460 #define RCLCPP_INFO_FUNCTION(...)
462 #define RCLCPP_INFO_SKIPFIRST(...)
464 #define RCLCPP_INFO_THROTTLE(...)
466 #define RCLCPP_INFO_SKIPFIRST_THROTTLE(...)
468 #define RCLCPP_INFO_STREAM(...)
470 #define RCLCPP_INFO_STREAM_ONCE(...)
472 #define RCLCPP_INFO_STREAM_EXPRESSION(...)
474 #define RCLCPP_INFO_STREAM_FUNCTION(...)
476 #define RCLCPP_INFO_STREAM_SKIPFIRST(...)
478 #define RCLCPP_INFO_STREAM_THROTTLE(...)
480 #define RCLCPP_INFO_STREAM_SKIPFIRST_THROTTLE(...)
481 
482 #else
487 #define RCLCPP_INFO(logger, ...) RCLCPP_LOG(RCUTILS_LOG_SEVERITY_INFO, logger, __VA_ARGS__)
488 
493 #define RCLCPP_INFO_ONCE(logger, ...) \
494  RCLCPP_LOG_ONCE(RCUTILS_LOG_SEVERITY_INFO, logger, __VA_ARGS__)
495 
500 #define RCLCPP_INFO_EXPRESSION(logger, expression, ...) \
501  RCLCPP_LOG_EXPRESSION(RCUTILS_LOG_SEVERITY_INFO, logger, expression, __VA_ARGS__)
502 
507 #define RCLCPP_INFO_FUNCTION(logger, function, ...) \
508  RCLCPP_LOG_FUNCTION(RCUTILS_LOG_SEVERITY_INFO, logger, function, __VA_ARGS__)
509 
514 #define RCLCPP_INFO_SKIPFIRST(logger, ...) \
515  RCLCPP_LOG_SKIPFIRST(RCUTILS_LOG_SEVERITY_INFO, logger, __VA_ARGS__)
516 
521 #define RCLCPP_INFO_THROTTLE(logger, clock, duration, ...) \
522  RCLCPP_LOG_THROTTLE(RCUTILS_LOG_SEVERITY_INFO, logger, clock, duration, __VA_ARGS__)
523 
528 #define RCLCPP_INFO_SKIPFIRST_THROTTLE(logger, clock, duration, ...) \
529  RCLCPP_LOG_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_INFO, logger, clock, duration, __VA_ARGS__)
530 
535 #define RCLCPP_INFO_STREAM(logger, stream_arg) \
536  RCLCPP_LOG_STREAM(RCUTILS_LOG_SEVERITY_INFO, logger, stream_arg)
537 
542 #define RCLCPP_INFO_STREAM_ONCE(logger, stream_arg) \
543  RCLCPP_LOG_STREAM_ONCE(RCUTILS_LOG_SEVERITY_INFO, logger, stream_arg)
544 
549 #define RCLCPP_INFO_STREAM_EXPRESSION(logger, expression, stream_arg) \
550  RCLCPP_LOG_STREAM_EXPRESSION(RCUTILS_LOG_SEVERITY_INFO, logger, expression, stream_arg)
551 
556 #define RCLCPP_INFO_STREAM_FUNCTION(logger, function, stream_arg) \
557  RCLCPP_LOG_STREAM_FUNCTION(RCUTILS_LOG_SEVERITY_INFO, logger, function, stream_args)
558 
563 #define RCLCPP_INFO_STREAM_SKIPFIRST(logger, stream_arg) \
564  RCLCPP_LOG_STREAM_SKIPFIRST(RCUTILS_LOG_SEVERITY_INFO, logger, stream_arg)
565 
570 #define RCLCPP_INFO_STREAM_THROTTLE(logger, clock, duration, stream_arg) \
571  RCLCPP_LOG_STREAM_THROTTLE(RCUTILS_LOG_SEVERITY_INFO, logger, clock, duration, stream_arg)
572 
577 #define RCLCPP_INFO_STREAM_SKIPFIRST_THROTTLE(logger, clock, duration, stream_arg) \
578  RCLCPP_LOG_STREAM_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_INFO, logger, clock, duration, \
579  stream_arg)
580 
581 #endif
582 
585 #if (RCLCPP_LOG_MIN_SEVERITY > RCLCPP_LOG_MIN_SEVERITY_WARN)
586 // empty logging macros for severity WARN when being disabled at compile time
588 #define RCLCPP_WARN(...)
590 #define RCLCPP_WARN_ONCE(...)
592 #define RCLCPP_WARN_EXPRESSION(...)
594 #define RCLCPP_WARN_FUNCTION(...)
596 #define RCLCPP_WARN_SKIPFIRST(...)
598 #define RCLCPP_WARN_THROTTLE(...)
600 #define RCLCPP_WARN_SKIPFIRST_THROTTLE(...)
602 #define RCLCPP_WARN_STREAM(...)
604 #define RCLCPP_WARN_STREAM_ONCE(...)
606 #define RCLCPP_WARN_STREAM_EXPRESSION(...)
608 #define RCLCPP_WARN_STREAM_FUNCTION(...)
610 #define RCLCPP_WARN_STREAM_SKIPFIRST(...)
612 #define RCLCPP_WARN_STREAM_THROTTLE(...)
614 #define RCLCPP_WARN_STREAM_SKIPFIRST_THROTTLE(...)
615 
616 #else
621 #define RCLCPP_WARN(logger, ...) RCLCPP_LOG(RCUTILS_LOG_SEVERITY_WARN, logger, __VA_ARGS__)
622 
627 #define RCLCPP_WARN_ONCE(logger, ...) \
628  RCLCPP_LOG_ONCE(RCUTILS_LOG_SEVERITY_WARN, logger, __VA_ARGS__)
629 
634 #define RCLCPP_WARN_EXPRESSION(logger, expression, ...) \
635  RCLCPP_LOG_EXPRESSION(RCUTILS_LOG_SEVERITY_WARN, logger, expression, __VA_ARGS__)
636 
641 #define RCLCPP_WARN_FUNCTION(logger, function, ...) \
642  RCLCPP_LOG_FUNCTION(RCUTILS_LOG_SEVERITY_WARN, logger, function, __VA_ARGS__)
643 
648 #define RCLCPP_WARN_SKIPFIRST(logger, ...) \
649  RCLCPP_LOG_SKIPFIRST(RCUTILS_LOG_SEVERITY_WARN, logger, __VA_ARGS__)
650 
655 #define RCLCPP_WARN_THROTTLE(logger, clock, duration, ...) \
656  RCLCPP_LOG_THROTTLE(RCUTILS_LOG_SEVERITY_WARN, logger, clock, duration, __VA_ARGS__)
657 
662 #define RCLCPP_WARN_SKIPFIRST_THROTTLE(logger, clock, duration, ...) \
663  RCLCPP_LOG_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_WARN, logger, clock, duration, __VA_ARGS__)
664 
669 #define RCLCPP_WARN_STREAM(logger, stream_arg) \
670  RCLCPP_LOG_STREAM(RCUTILS_LOG_SEVERITY_WARN, logger, stream_arg)
671 
676 #define RCLCPP_WARN_STREAM_ONCE(logger, stream_arg) \
677  RCLCPP_LOG_STREAM_ONCE(RCUTILS_LOG_SEVERITY_WARN, logger, stream_arg)
678 
683 #define RCLCPP_WARN_STREAM_EXPRESSION(logger, expression, stream_arg) \
684  RCLCPP_LOG_STREAM_EXPRESSION(RCUTILS_LOG_SEVERITY_WARN, logger, expression, stream_arg)
685 
690 #define RCLCPP_WARN_STREAM_FUNCTION(logger, function, stream_arg) \
691  RCLCPP_LOG_STREAM_FUNCTION(RCUTILS_LOG_SEVERITY_WARN, logger, function, stream_args)
692 
697 #define RCLCPP_WARN_STREAM_SKIPFIRST(logger, stream_arg) \
698  RCLCPP_LOG_STREAM_SKIPFIRST(RCUTILS_LOG_SEVERITY_WARN, logger, stream_arg)
699 
704 #define RCLCPP_WARN_STREAM_THROTTLE(logger, clock, duration, stream_arg) \
705  RCLCPP_LOG_STREAM_THROTTLE(RCUTILS_LOG_SEVERITY_WARN, logger, clock, duration, stream_arg)
706 
711 #define RCLCPP_WARN_STREAM_SKIPFIRST_THROTTLE(logger, clock, duration, stream_arg) \
712  RCLCPP_LOG_STREAM_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_WARN, logger, clock, duration, \
713  stream_arg)
714 
715 #endif
716 
719 #if (RCLCPP_LOG_MIN_SEVERITY > RCLCPP_LOG_MIN_SEVERITY_ERROR)
720 // empty logging macros for severity ERROR when being disabled at compile time
722 #define RCLCPP_ERROR(...)
724 #define RCLCPP_ERROR_ONCE(...)
726 #define RCLCPP_ERROR_EXPRESSION(...)
728 #define RCLCPP_ERROR_FUNCTION(...)
730 #define RCLCPP_ERROR_SKIPFIRST(...)
732 #define RCLCPP_ERROR_THROTTLE(...)
734 #define RCLCPP_ERROR_SKIPFIRST_THROTTLE(...)
736 #define RCLCPP_ERROR_STREAM(...)
738 #define RCLCPP_ERROR_STREAM_ONCE(...)
740 #define RCLCPP_ERROR_STREAM_EXPRESSION(...)
742 #define RCLCPP_ERROR_STREAM_FUNCTION(...)
744 #define RCLCPP_ERROR_STREAM_SKIPFIRST(...)
746 #define RCLCPP_ERROR_STREAM_THROTTLE(...)
748 #define RCLCPP_ERROR_STREAM_SKIPFIRST_THROTTLE(...)
749 
750 #else
755 #define RCLCPP_ERROR(logger, ...) RCLCPP_LOG(RCUTILS_LOG_SEVERITY_ERROR, logger, __VA_ARGS__)
756 
761 #define RCLCPP_ERROR_ONCE(logger, ...) \
762  RCLCPP_LOG_ONCE(RCUTILS_LOG_SEVERITY_ERROR, logger, __VA_ARGS__)
763 
768 #define RCLCPP_ERROR_EXPRESSION(logger, expression, ...) \
769  RCLCPP_LOG_EXPRESSION(RCUTILS_LOG_SEVERITY_ERROR, logger, expression, __VA_ARGS__)
770 
775 #define RCLCPP_ERROR_FUNCTION(logger, function, ...) \
776  RCLCPP_LOG_FUNCTION(RCUTILS_LOG_SEVERITY_ERROR, logger, function, __VA_ARGS__)
777 
782 #define RCLCPP_ERROR_SKIPFIRST(logger, ...) \
783  RCLCPP_LOG_SKIPFIRST(RCUTILS_LOG_SEVERITY_ERROR, logger, __VA_ARGS__)
784 
789 #define RCLCPP_ERROR_THROTTLE(logger, clock, duration, ...) \
790  RCLCPP_LOG_THROTTLE(RCUTILS_LOG_SEVERITY_ERROR, logger, clock, duration, __VA_ARGS__)
791 
796 #define RCLCPP_ERROR_SKIPFIRST_THROTTLE(logger, clock, duration, ...) \
797  RCLCPP_LOG_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_ERROR, logger, clock, duration, __VA_ARGS__)
798 
803 #define RCLCPP_ERROR_STREAM(logger, stream_arg) \
804  RCLCPP_LOG_STREAM(RCUTILS_LOG_SEVERITY_ERROR, logger, stream_arg)
805 
810 #define RCLCPP_ERROR_STREAM_ONCE(logger, stream_arg) \
811  RCLCPP_LOG_STREAM_ONCE(RCUTILS_LOG_SEVERITY_ERROR, logger, stream_arg)
812 
817 #define RCLCPP_ERROR_STREAM_EXPRESSION(logger, expression, stream_arg) \
818  RCLCPP_LOG_STREAM_EXPRESSION(RCUTILS_LOG_SEVERITY_ERROR, logger, expression, stream_arg)
819 
824 #define RCLCPP_ERROR_STREAM_FUNCTION(logger, function, stream_arg) \
825  RCLCPP_LOG_STREAM_FUNCTION(RCUTILS_LOG_SEVERITY_ERROR, logger, function, stream_args)
826 
831 #define RCLCPP_ERROR_STREAM_SKIPFIRST(logger, stream_arg) \
832  RCLCPP_LOG_STREAM_SKIPFIRST(RCUTILS_LOG_SEVERITY_ERROR, logger, stream_arg)
833 
838 #define RCLCPP_ERROR_STREAM_THROTTLE(logger, clock, duration, stream_arg) \
839  RCLCPP_LOG_STREAM_THROTTLE(RCUTILS_LOG_SEVERITY_ERROR, logger, clock, duration, stream_arg)
840 
845 #define RCLCPP_ERROR_STREAM_SKIPFIRST_THROTTLE(logger, clock, duration, stream_arg) \
846  RCLCPP_LOG_STREAM_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_ERROR, logger, clock, duration, \
847  stream_arg)
848 
849 #endif
850 
853 #if (RCLCPP_LOG_MIN_SEVERITY > RCLCPP_LOG_MIN_SEVERITY_FATAL)
854 // empty logging macros for severity FATAL when being disabled at compile time
856 #define RCLCPP_FATAL(...)
858 #define RCLCPP_FATAL_ONCE(...)
860 #define RCLCPP_FATAL_EXPRESSION(...)
862 #define RCLCPP_FATAL_FUNCTION(...)
864 #define RCLCPP_FATAL_SKIPFIRST(...)
866 #define RCLCPP_FATAL_THROTTLE(...)
868 #define RCLCPP_FATAL_SKIPFIRST_THROTTLE(...)
870 #define RCLCPP_FATAL_STREAM(...)
872 #define RCLCPP_FATAL_STREAM_ONCE(...)
874 #define RCLCPP_FATAL_STREAM_EXPRESSION(...)
876 #define RCLCPP_FATAL_STREAM_FUNCTION(...)
878 #define RCLCPP_FATAL_STREAM_SKIPFIRST(...)
880 #define RCLCPP_FATAL_STREAM_THROTTLE(...)
882 #define RCLCPP_FATAL_STREAM_SKIPFIRST_THROTTLE(...)
883 
884 #else
889 #define RCLCPP_FATAL(logger, ...) RCLCPP_LOG(RCUTILS_LOG_SEVERITY_FATAL, logger, __VA_ARGS__)
890 
895 #define RCLCPP_FATAL_ONCE(logger, ...) \
896  RCLCPP_LOG_ONCE(RCUTILS_LOG_SEVERITY_FATAL, logger, __VA_ARGS__)
897 
902 #define RCLCPP_FATAL_EXPRESSION(logger, expression, ...) \
903  RCLCPP_LOG_EXPRESSION(RCUTILS_LOG_SEVERITY_FATAL, logger, expression, __VA_ARGS__)
904 
909 #define RCLCPP_FATAL_FUNCTION(logger, function, ...) \
910  RCLCPP_LOG_FUNCTION(RCUTILS_LOG_SEVERITY_FATAL, logger, function, __VA_ARGS__)
911 
916 #define RCLCPP_FATAL_SKIPFIRST(logger, ...) \
917  RCLCPP_LOG_SKIPFIRST(RCUTILS_LOG_SEVERITY_FATAL, logger, __VA_ARGS__)
918 
923 #define RCLCPP_FATAL_THROTTLE(logger, clock, duration, ...) \
924  RCLCPP_LOG_THROTTLE(RCUTILS_LOG_SEVERITY_FATAL, logger, clock, duration, __VA_ARGS__)
925 
930 #define RCLCPP_FATAL_SKIPFIRST_THROTTLE(logger, clock, duration, ...) \
931  RCLCPP_LOG_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_FATAL, logger, clock, duration, __VA_ARGS__)
932 
937 #define RCLCPP_FATAL_STREAM(logger, stream_arg) \
938  RCLCPP_LOG_STREAM(RCUTILS_LOG_SEVERITY_FATAL, logger, stream_arg)
939 
944 #define RCLCPP_FATAL_STREAM_ONCE(logger, stream_arg) \
945  RCLCPP_LOG_STREAM_ONCE(RCUTILS_LOG_SEVERITY_FATAL, logger, stream_arg)
946 
951 #define RCLCPP_FATAL_STREAM_EXPRESSION(logger, expression, stream_arg) \
952  RCLCPP_LOG_STREAM_EXPRESSION(RCUTILS_LOG_SEVERITY_FATAL, logger, expression, stream_arg)
953 
958 #define RCLCPP_FATAL_STREAM_FUNCTION(logger, function, stream_arg) \
959  RCLCPP_LOG_STREAM_FUNCTION(RCUTILS_LOG_SEVERITY_FATAL, logger, function, stream_args)
960 
965 #define RCLCPP_FATAL_STREAM_SKIPFIRST(logger, stream_arg) \
966  RCLCPP_LOG_STREAM_SKIPFIRST(RCUTILS_LOG_SEVERITY_FATAL, logger, stream_arg)
967 
972 #define RCLCPP_FATAL_STREAM_THROTTLE(logger, clock, duration, stream_arg) \
973  RCLCPP_LOG_STREAM_THROTTLE(RCUTILS_LOG_SEVERITY_FATAL, logger, clock, duration, stream_arg)
974 
979 #define RCLCPP_FATAL_STREAM_SKIPFIRST_THROTTLE(logger, clock, duration, stream_arg) \
980  RCLCPP_LOG_STREAM_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_FATAL, logger, clock, duration, \
981  stream_arg)
982 
983 #endif
984 
985 #endif // RCLCPP__LOGGING_HPP_