ROS 2 rclcpp + rcl - rolling  rolling-29de98cf
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 <format>
19 #include <sstream>
20 #include <type_traits>
21 
22 #include "rclcpp/logger.hpp"
23 #include "rcutils/logging_macros.h"
24 
25 // These are used for compiling out logging macros lower than a minimum severity.
26 #define RCLCPP_LOG_MIN_SEVERITY_DEBUG 0
27 #define RCLCPP_LOG_MIN_SEVERITY_INFO 1
28 #define RCLCPP_LOG_MIN_SEVERITY_WARN 2
29 #define RCLCPP_LOG_MIN_SEVERITY_ERROR 3
30 #define RCLCPP_LOG_MIN_SEVERITY_FATAL 4
31 #define RCLCPP_LOG_MIN_SEVERITY_NONE 5
32 
33 #define RCLCPP_STATIC_ASSERT_LOGGER(logger) \
34  do { \
35  static_assert( \
36  ::std::is_convertible_v<decltype(logger), ::rclcpp::Logger>, \
37  "First argument to logging macros must be an rclcpp::Logger"); \
38  } while (0)
39 
46 #define RCLCPP_LOG(severity, logger, ...) \
47  do { \
48  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
49  RCUTILS_LOG_NAMED(severity, (logger).get_name(), __VA_ARGS__); \
50  } while (0)
51 
60 #define RCLCPP_LOG_ONCE(severity, logger, ...) \
61  do { \
62  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
63  RCUTILS_LOG_ONCE_NAMED(severity, (logger).get_name(), __VA_ARGS__); \
64  } while (0)
65 
75 #define RCLCPP_LOG_EXPRESSION(severity, logger, expression, ...) \
76  do { \
77  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
78  RCUTILS_LOG_EXPRESSION_NAMED(severity, expression, (logger).get_name(), __VA_ARGS__); \
79  } while (0)
80 
90 #define RCLCPP_LOG_FUNCTION(severity, logger, function, ...) \
91  do { \
92  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
93  RCUTILS_LOG_FUNCTION_NAMED(severity, function, (logger).get_name(), __VA_ARGS__); \
94  } while (0)
95 
104 #define RCLCPP_LOG_SKIPFIRST(severity, logger, ...) \
105  do { \
106  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
107  RCUTILS_LOG_SKIPFIRST_NAMED(severity, (logger).get_name(), __VA_ARGS__); \
108  } while (0)
109 
110 #define RCLCPP_LOG_TIME_POINT_FUNC(clock) \
111  [&c = clock](rcutils_time_point_value_t * time_point)->rcutils_ret_t { \
112  try { \
113  *time_point = c.now().nanoseconds(); \
114  } catch (...) { \
115  RCUTILS_SAFE_FWRITE_TO_STDERR( \
116  "[rclcpp|logging.hpp] RCLCPP_DEBUG_THROTTLE could not get current time stamp\n"); \
117  return RCUTILS_RET_ERROR; \
118  } \
119  return RCUTILS_RET_OK; \
120  }
121 
132 #define RCLCPP_LOG_THROTTLE(severity, logger, clock, duration, ...) \
133  do { \
134  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
135  RCUTILS_LOG_THROTTLE_NAMED( \
136  severity, \
137  RCLCPP_LOG_TIME_POINT_FUNC(clock), \
138  duration, \
139  (logger).get_name(), \
140  __VA_ARGS__); \
141  } while (0)
142 
154 #define RCLCPP_LOG_SKIPFIRST_THROTTLE(severity, logger, clock, duration, ...) \
155  do { \
156  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
157  RCUTILS_LOG_SKIPFIRST_THROTTLE_NAMED( \
158  severity, \
159  RCLCPP_LOG_TIME_POINT_FUNC(clock), \
160  duration, \
161  (logger).get_name(), \
162  __VA_ARGS__); \
163  } while (0)
164 
172 #define RCLCPP_LOG_STREAM(severity, logger, stream_arg) \
173  do { \
174  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
175  std::stringstream rclcpp_stream_ss_; \
176  rclcpp_stream_ss_ << stream_arg; \
177  RCUTILS_LOG_NAMED(severity, (logger).get_name(), "%s", rclcpp_stream_ss_.str().c_str()); \
178  } while (0)
179 
188 #define RCLCPP_LOG_STREAM_ONCE(severity, logger, stream_arg) \
189  do { \
190  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
191  std::stringstream rclcpp_stream_ss_; \
192  rclcpp_stream_ss_ << stream_arg; \
193  RCUTILS_LOG_ONCE_NAMED(severity, (logger).get_name(), "%s", rclcpp_stream_ss_.str().c_str()); \
194  } while (0)
195 
205 #define RCLCPP_LOG_STREAM_EXPRESSION(severity, logger, expression, stream_arg) \
206  do { \
207  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
208  std::stringstream rclcpp_stream_ss_; \
209  rclcpp_stream_ss_ << stream_arg; \
210  RCUTILS_LOG_EXPRESSION_NAMED( \
211  severity, \
212  expression, \
213  (logger).get_name(), \
214  "%s", rclcpp_stream_ss_.str().c_str()); \
215  } while (0)
216 
226 #define RCLCPP_LOG_STREAM_FUNCTION(severity, logger, function, stream_arg) \
227  do { \
228  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
229  std::stringstream rclcpp_stream_ss_; \
230  rclcpp_stream_ss_ << stream_arg; \
231  RCUTILS_LOG_FUNCTION_NAMED( \
232  severity, \
233  function, \
234  (logger).get_name(), \
235  "%s", rclcpp_stream_ss_.str().c_str()); \
236  } while (0)
237 
246 #define RCLCPP_LOG_STREAM_SKIPFIRST(severity, logger, stream_arg) \
247  do { \
248  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
249  std::stringstream rclcpp_stream_ss_; \
250  rclcpp_stream_ss_ << stream_arg; \
251  RCUTILS_LOG_SKIPFIRST_NAMED( \
252  severity, \
253  (logger).get_name(), \
254  "%s", rclcpp_stream_ss_.str().c_str()); \
255  } while (0)
256 
267 #define RCLCPP_LOG_STREAM_THROTTLE(severity, logger, clock, duration, stream_arg) \
268  do { \
269  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
270  std::stringstream rclcpp_stream_ss_; \
271  rclcpp_stream_ss_ << stream_arg; \
272  RCUTILS_LOG_THROTTLE_NAMED( \
273  severity, \
274  RCLCPP_LOG_TIME_POINT_FUNC(clock), \
275  duration, \
276  (logger).get_name(), \
277  "%s", rclcpp_stream_ss_.str().c_str()); \
278  } while (0)
279 
291 #define RCLCPP_LOG_STREAM_SKIPFIRST_THROTTLE(severity, logger, clock, duration, stream_arg) \
292  do { \
293  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
294  std::stringstream rclcpp_stream_ss_; \
295  rclcpp_stream_ss_ << stream_arg; \
296  RCUTILS_LOG_SKIPFIRST_THROTTLE_NAMED( \
297  severity, \
298  RCLCPP_LOG_TIME_POINT_FUNC(clock), \
299  duration, \
300  (logger).get_name(), \
301  "%s", rclcpp_stream_ss_.str().c_str()); \
302  } while (0)
303 
311 #define RCLCPP_LOG_FMT(severity, logger, ...) \
312  do { \
313  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
314  RCUTILS_LOG_NAMED(severity, (logger).get_name(), "%s", std::format(__VA_ARGS__).c_str()); \
315  } while (0)
316 
325 #define RCLCPP_LOG_FMT_ONCE(severity, logger, ...) \
326  do { \
327  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
328  RCUTILS_LOG_ONCE_NAMED(severity, (logger).get_name(), "%s", std::format(__VA_ARGS__).c_str()); \
329  } while (0)
330 
340 #define RCLCPP_LOG_FMT_EXPRESSION(severity, logger, expression, ...) \
341  do { \
342  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
343  RCUTILS_LOG_EXPRESSION_NAMED( \
344  severity, \
345  expression, \
346  (logger).get_name(), \
347  "%s", std::format(__VA_ARGS__).c_str()); \
348  } while (0)
349 
359 #define RCLCPP_LOG_FMT_FUNCTION(severity, logger, function, ...) \
360  do { \
361  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
362  RCUTILS_LOG_FUNCTION_NAMED( \
363  severity, \
364  function, \
365  (logger).get_name(), \
366  "%s", std::format(__VA_ARGS__).c_str()); \
367  } while (0)
368 
377 #define RCLCPP_LOG_FMT_SKIPFIRST(severity, logger, ...) \
378  do { \
379  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
380  RCUTILS_LOG_SKIPFIRST_NAMED( \
381  severity, \
382  (logger).get_name(), \
383  "%s", std::format(__VA_ARGS__).c_str()); \
384  } while (0)
385 
396 #define RCLCPP_LOG_FMT_THROTTLE(severity, logger, clock, duration, ...) \
397  do { \
398  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
399  RCUTILS_LOG_THROTTLE_NAMED( \
400  severity, \
401  RCLCPP_LOG_TIME_POINT_FUNC(clock), \
402  duration, \
403  (logger).get_name(), \
404  "%s", std::format(__VA_ARGS__).c_str()); \
405  } while (0)
406 
418 #define RCLCPP_LOG_FMT_SKIPFIRST_THROTTLE(severity, logger, clock, duration, ...) \
419  do { \
420  RCLCPP_STATIC_ASSERT_LOGGER(logger); \
421  RCUTILS_LOG_SKIPFIRST_THROTTLE_NAMED( \
422  severity, \
423  RCLCPP_LOG_TIME_POINT_FUNC(clock), \
424  duration, \
425  (logger).get_name(), \
426  "%s", std::format(__VA_ARGS__).c_str()); \
427  } while (0)
428 
435 #ifndef RCLCPP_LOG_MIN_SEVERITY
436 #define RCLCPP_LOG_MIN_SEVERITY RCLCPP_LOG_MIN_SEVERITY_DEBUG
437 #endif
438 
441 #if (RCLCPP_LOG_MIN_SEVERITY > RCLCPP_LOG_MIN_SEVERITY_DEBUG)
442 // empty logging macros for severity DEBUG when being disabled at compile time
444 #define RCLCPP_DEBUG(...)
446 #define RCLCPP_DEBUG_ONCE(...)
448 #define RCLCPP_DEBUG_EXPRESSION(...)
450 #define RCLCPP_DEBUG_FUNCTION(...)
452 #define RCLCPP_DEBUG_SKIPFIRST(...)
454 #define RCLCPP_DEBUG_THROTTLE(...)
456 #define RCLCPP_DEBUG_SKIPFIRST_THROTTLE(...)
458 #define RCLCPP_DEBUG_STREAM(...)
460 #define RCLCPP_DEBUG_STREAM_ONCE(...)
462 #define RCLCPP_DEBUG_STREAM_EXPRESSION(...)
464 #define RCLCPP_DEBUG_STREAM_FUNCTION(...)
466 #define RCLCPP_DEBUG_STREAM_SKIPFIRST(...)
468 #define RCLCPP_DEBUG_STREAM_THROTTLE(...)
470 #define RCLCPP_DEBUG_STREAM_SKIPFIRST_THROTTLE(...)
472 #define RCLCPP_DEBUG_FMT(...)
474 #define RCLCPP_DEBUG_FMT_ONCE(...)
476 #define RCLCPP_DEBUG_FMT_EXPRESSION(...)
478 #define RCLCPP_DEBUG_FMT_FUNCTION(...)
480 #define RCLCPP_DEBUG_FMT_SKIPFIRST(...)
482 #define RCLCPP_DEBUG_FMT_THROTTLE(...)
484 #define RCLCPP_DEBUG_FMT_SKIPFIRST_THROTTLE(...)
485 
486 #else
491 #define RCLCPP_DEBUG(logger, ...) RCLCPP_LOG(RCUTILS_LOG_SEVERITY_DEBUG, logger, __VA_ARGS__)
492 
497 #define RCLCPP_DEBUG_ONCE(logger, ...) \
498  RCLCPP_LOG_ONCE(RCUTILS_LOG_SEVERITY_DEBUG, logger, __VA_ARGS__)
499 
504 #define RCLCPP_DEBUG_EXPRESSION(logger, expression, ...) \
505  RCLCPP_LOG_EXPRESSION(RCUTILS_LOG_SEVERITY_DEBUG, logger, expression, __VA_ARGS__)
506 
511 #define RCLCPP_DEBUG_FUNCTION(logger, function, ...) \
512  RCLCPP_LOG_FUNCTION(RCUTILS_LOG_SEVERITY_DEBUG, logger, function, __VA_ARGS__)
513 
518 #define RCLCPP_DEBUG_SKIPFIRST(logger, ...) \
519  RCLCPP_LOG_SKIPFIRST(RCUTILS_LOG_SEVERITY_DEBUG, logger, __VA_ARGS__)
520 
525 #define RCLCPP_DEBUG_THROTTLE(logger, clock, duration, ...) \
526  RCLCPP_LOG_THROTTLE(RCUTILS_LOG_SEVERITY_DEBUG, logger, clock, duration, __VA_ARGS__)
527 
532 #define RCLCPP_DEBUG_SKIPFIRST_THROTTLE(logger, clock, duration, ...) \
533  RCLCPP_LOG_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_DEBUG, logger, clock, duration, __VA_ARGS__)
534 
539 #define RCLCPP_DEBUG_STREAM(logger, stream_arg) \
540  RCLCPP_LOG_STREAM(RCUTILS_LOG_SEVERITY_DEBUG, logger, stream_arg)
541 
546 #define RCLCPP_DEBUG_STREAM_ONCE(logger, stream_arg) \
547  RCLCPP_LOG_STREAM_ONCE(RCUTILS_LOG_SEVERITY_DEBUG, logger, stream_arg)
548 
553 #define RCLCPP_DEBUG_STREAM_EXPRESSION(logger, expression, stream_arg) \
554  RCLCPP_LOG_STREAM_EXPRESSION(RCUTILS_LOG_SEVERITY_DEBUG, logger, expression, stream_arg)
555 
560 #define RCLCPP_DEBUG_STREAM_FUNCTION(logger, function, stream_arg) \
561  RCLCPP_LOG_STREAM_FUNCTION(RCUTILS_LOG_SEVERITY_DEBUG, logger, function, stream_args)
562 
567 #define RCLCPP_DEBUG_STREAM_SKIPFIRST(logger, stream_arg) \
568  RCLCPP_LOG_STREAM_SKIPFIRST(RCUTILS_LOG_SEVERITY_DEBUG, logger, stream_arg)
569 
574 #define RCLCPP_DEBUG_STREAM_THROTTLE(logger, clock, duration, stream_arg) \
575  RCLCPP_LOG_STREAM_THROTTLE(RCUTILS_LOG_SEVERITY_DEBUG, logger, clock, duration, stream_arg)
576 
581 #define RCLCPP_DEBUG_STREAM_SKIPFIRST_THROTTLE(logger, clock, duration, stream_arg) \
582  RCLCPP_LOG_STREAM_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_DEBUG, logger, clock, duration, \
583  stream_arg)
584 
589 #define RCLCPP_DEBUG_FMT(logger, ...) \
590  RCLCPP_LOG_FMT(RCUTILS_LOG_SEVERITY_DEBUG, logger, __VA_ARGS__)
591 
596 #define RCLCPP_DEBUG_FMT_ONCE(logger, ...) \
597  RCLCPP_LOG_FMT_ONCE(RCUTILS_LOG_SEVERITY_DEBUG, logger, __VA_ARGS__)
598 
603 #define RCLCPP_DEBUG_FMT_EXPRESSION(logger, expression, ...) \
604  RCLCPP_LOG_FMT_EXPRESSION(RCUTILS_LOG_SEVERITY_DEBUG, logger, expression, __VA_ARGS__)
605 
610 #define RCLCPP_DEBUG_FMT_FUNCTION(logger, function, ...) \
611  RCLCPP_LOG_FMT_FUNCTION(RCUTILS_LOG_SEVERITY_DEBUG, logger, function, __VA_ARGS__)
612 
617 #define RCLCPP_DEBUG_FMT_SKIPFIRST(logger, ...) \
618  RCLCPP_LOG_FMT_SKIPFIRST(RCUTILS_LOG_SEVERITY_DEBUG, logger, __VA_ARGS__)
619 
624 #define RCLCPP_DEBUG_FMT_THROTTLE(logger, clock, duration, ...) \
625  RCLCPP_LOG_FMT_THROTTLE(RCUTILS_LOG_SEVERITY_DEBUG, logger, clock, duration, __VA_ARGS__)
626 
631 #define RCLCPP_DEBUG_FMT_SKIPFIRST_THROTTLE(logger, clock, duration, ...) \
632  RCLCPP_LOG_FMT_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_DEBUG, logger, clock, duration, \
633  __VA_ARGS__)
634 
635 #endif
636 
639 #if (RCLCPP_LOG_MIN_SEVERITY > RCLCPP_LOG_MIN_SEVERITY_INFO)
640 // empty logging macros for severity INFO when being disabled at compile time
642 #define RCLCPP_INFO(...)
644 #define RCLCPP_INFO_ONCE(...)
646 #define RCLCPP_INFO_EXPRESSION(...)
648 #define RCLCPP_INFO_FUNCTION(...)
650 #define RCLCPP_INFO_SKIPFIRST(...)
652 #define RCLCPP_INFO_THROTTLE(...)
654 #define RCLCPP_INFO_SKIPFIRST_THROTTLE(...)
656 #define RCLCPP_INFO_STREAM(...)
658 #define RCLCPP_INFO_STREAM_ONCE(...)
660 #define RCLCPP_INFO_STREAM_EXPRESSION(...)
662 #define RCLCPP_INFO_STREAM_FUNCTION(...)
664 #define RCLCPP_INFO_STREAM_SKIPFIRST(...)
666 #define RCLCPP_INFO_STREAM_THROTTLE(...)
668 #define RCLCPP_INFO_STREAM_SKIPFIRST_THROTTLE(...)
670 #define RCLCPP_INFO_FMT(...)
672 #define RCLCPP_INFO_FMT_ONCE(...)
674 #define RCLCPP_INFO_FMT_EXPRESSION(...)
676 #define RCLCPP_INFO_FMT_FUNCTION(...)
678 #define RCLCPP_INFO_FMT_SKIPFIRST(...)
680 #define RCLCPP_INFO_FMT_THROTTLE(...)
682 #define RCLCPP_INFO_FMT_SKIPFIRST_THROTTLE(...)
683 
684 #else
689 #define RCLCPP_INFO(logger, ...) RCLCPP_LOG(RCUTILS_LOG_SEVERITY_INFO, logger, __VA_ARGS__)
690 
695 #define RCLCPP_INFO_ONCE(logger, ...) \
696  RCLCPP_LOG_ONCE(RCUTILS_LOG_SEVERITY_INFO, logger, __VA_ARGS__)
697 
702 #define RCLCPP_INFO_EXPRESSION(logger, expression, ...) \
703  RCLCPP_LOG_EXPRESSION(RCUTILS_LOG_SEVERITY_INFO, logger, expression, __VA_ARGS__)
704 
709 #define RCLCPP_INFO_FUNCTION(logger, function, ...) \
710  RCLCPP_LOG_FUNCTION(RCUTILS_LOG_SEVERITY_INFO, logger, function, __VA_ARGS__)
711 
716 #define RCLCPP_INFO_SKIPFIRST(logger, ...) \
717  RCLCPP_LOG_SKIPFIRST(RCUTILS_LOG_SEVERITY_INFO, logger, __VA_ARGS__)
718 
723 #define RCLCPP_INFO_THROTTLE(logger, clock, duration, ...) \
724  RCLCPP_LOG_THROTTLE(RCUTILS_LOG_SEVERITY_INFO, logger, clock, duration, __VA_ARGS__)
725 
730 #define RCLCPP_INFO_SKIPFIRST_THROTTLE(logger, clock, duration, ...) \
731  RCLCPP_LOG_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_INFO, logger, clock, duration, __VA_ARGS__)
732 
737 #define RCLCPP_INFO_STREAM(logger, stream_arg) \
738  RCLCPP_LOG_STREAM(RCUTILS_LOG_SEVERITY_INFO, logger, stream_arg)
739 
744 #define RCLCPP_INFO_STREAM_ONCE(logger, stream_arg) \
745  RCLCPP_LOG_STREAM_ONCE(RCUTILS_LOG_SEVERITY_INFO, logger, stream_arg)
746 
751 #define RCLCPP_INFO_STREAM_EXPRESSION(logger, expression, stream_arg) \
752  RCLCPP_LOG_STREAM_EXPRESSION(RCUTILS_LOG_SEVERITY_INFO, logger, expression, stream_arg)
753 
758 #define RCLCPP_INFO_STREAM_FUNCTION(logger, function, stream_arg) \
759  RCLCPP_LOG_STREAM_FUNCTION(RCUTILS_LOG_SEVERITY_INFO, logger, function, stream_args)
760 
765 #define RCLCPP_INFO_STREAM_SKIPFIRST(logger, stream_arg) \
766  RCLCPP_LOG_STREAM_SKIPFIRST(RCUTILS_LOG_SEVERITY_INFO, logger, stream_arg)
767 
772 #define RCLCPP_INFO_STREAM_THROTTLE(logger, clock, duration, stream_arg) \
773  RCLCPP_LOG_STREAM_THROTTLE(RCUTILS_LOG_SEVERITY_INFO, logger, clock, duration, stream_arg)
774 
779 #define RCLCPP_INFO_STREAM_SKIPFIRST_THROTTLE(logger, clock, duration, stream_arg) \
780  RCLCPP_LOG_STREAM_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_INFO, logger, clock, duration, \
781  stream_arg)
782 
787 #define RCLCPP_INFO_FMT(logger, ...) RCLCPP_LOG_FMT(RCUTILS_LOG_SEVERITY_INFO, logger, __VA_ARGS__)
788 
793 #define RCLCPP_INFO_FMT_ONCE(logger, ...) \
794  RCLCPP_LOG_FMT_ONCE(RCUTILS_LOG_SEVERITY_INFO, logger, __VA_ARGS__)
795 
800 #define RCLCPP_INFO_FMT_EXPRESSION(logger, expression, ...) \
801  RCLCPP_LOG_FMT_EXPRESSION(RCUTILS_LOG_SEVERITY_INFO, logger, expression, __VA_ARGS__)
802 
807 #define RCLCPP_INFO_FMT_FUNCTION(logger, function, ...) \
808  RCLCPP_LOG_FMT_FUNCTION(RCUTILS_LOG_SEVERITY_INFO, logger, function, __VA_ARGS__)
809 
814 #define RCLCPP_INFO_FMT_SKIPFIRST(logger, ...) \
815  RCLCPP_LOG_FMT_SKIPFIRST(RCUTILS_LOG_SEVERITY_INFO, logger, __VA_ARGS__)
816 
821 #define RCLCPP_INFO_FMT_THROTTLE(logger, clock, duration, ...) \
822  RCLCPP_LOG_FMT_THROTTLE(RCUTILS_LOG_SEVERITY_INFO, logger, clock, duration, __VA_ARGS__)
823 
828 #define RCLCPP_INFO_FMT_SKIPFIRST_THROTTLE(logger, clock, duration, ...) \
829  RCLCPP_LOG_FMT_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_INFO, logger, clock, duration, __VA_ARGS__)
830 
831 #endif
832 
835 #if (RCLCPP_LOG_MIN_SEVERITY > RCLCPP_LOG_MIN_SEVERITY_WARN)
836 // empty logging macros for severity WARN when being disabled at compile time
838 #define RCLCPP_WARN(...)
840 #define RCLCPP_WARN_ONCE(...)
842 #define RCLCPP_WARN_EXPRESSION(...)
844 #define RCLCPP_WARN_FUNCTION(...)
846 #define RCLCPP_WARN_SKIPFIRST(...)
848 #define RCLCPP_WARN_THROTTLE(...)
850 #define RCLCPP_WARN_SKIPFIRST_THROTTLE(...)
852 #define RCLCPP_WARN_STREAM(...)
854 #define RCLCPP_WARN_STREAM_ONCE(...)
856 #define RCLCPP_WARN_STREAM_EXPRESSION(...)
858 #define RCLCPP_WARN_STREAM_FUNCTION(...)
860 #define RCLCPP_WARN_STREAM_SKIPFIRST(...)
862 #define RCLCPP_WARN_STREAM_THROTTLE(...)
864 #define RCLCPP_WARN_STREAM_SKIPFIRST_THROTTLE(...)
866 #define RCLCPP_WARN_FMT(...)
868 #define RCLCPP_WARN_FMT_ONCE(...)
870 #define RCLCPP_WARN_FMT_EXPRESSION(...)
872 #define RCLCPP_WARN_FMT_FUNCTION(...)
874 #define RCLCPP_WARN_FMT_SKIPFIRST(...)
876 #define RCLCPP_WARN_FMT_THROTTLE(...)
878 #define RCLCPP_WARN_FMT_SKIPFIRST_THROTTLE(...)
879 
880 #else
885 #define RCLCPP_WARN(logger, ...) RCLCPP_LOG(RCUTILS_LOG_SEVERITY_WARN, logger, __VA_ARGS__)
886 
891 #define RCLCPP_WARN_ONCE(logger, ...) \
892  RCLCPP_LOG_ONCE(RCUTILS_LOG_SEVERITY_WARN, logger, __VA_ARGS__)
893 
898 #define RCLCPP_WARN_EXPRESSION(logger, expression, ...) \
899  RCLCPP_LOG_EXPRESSION(RCUTILS_LOG_SEVERITY_WARN, logger, expression, __VA_ARGS__)
900 
905 #define RCLCPP_WARN_FUNCTION(logger, function, ...) \
906  RCLCPP_LOG_FUNCTION(RCUTILS_LOG_SEVERITY_WARN, logger, function, __VA_ARGS__)
907 
912 #define RCLCPP_WARN_SKIPFIRST(logger, ...) \
913  RCLCPP_LOG_SKIPFIRST(RCUTILS_LOG_SEVERITY_WARN, logger, __VA_ARGS__)
914 
919 #define RCLCPP_WARN_THROTTLE(logger, clock, duration, ...) \
920  RCLCPP_LOG_THROTTLE(RCUTILS_LOG_SEVERITY_WARN, logger, clock, duration, __VA_ARGS__)
921 
926 #define RCLCPP_WARN_SKIPFIRST_THROTTLE(logger, clock, duration, ...) \
927  RCLCPP_LOG_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_WARN, logger, clock, duration, __VA_ARGS__)
928 
933 #define RCLCPP_WARN_STREAM(logger, stream_arg) \
934  RCLCPP_LOG_STREAM(RCUTILS_LOG_SEVERITY_WARN, logger, stream_arg)
935 
940 #define RCLCPP_WARN_STREAM_ONCE(logger, stream_arg) \
941  RCLCPP_LOG_STREAM_ONCE(RCUTILS_LOG_SEVERITY_WARN, logger, stream_arg)
942 
947 #define RCLCPP_WARN_STREAM_EXPRESSION(logger, expression, stream_arg) \
948  RCLCPP_LOG_STREAM_EXPRESSION(RCUTILS_LOG_SEVERITY_WARN, logger, expression, stream_arg)
949 
954 #define RCLCPP_WARN_STREAM_FUNCTION(logger, function, stream_arg) \
955  RCLCPP_LOG_STREAM_FUNCTION(RCUTILS_LOG_SEVERITY_WARN, logger, function, stream_args)
956 
961 #define RCLCPP_WARN_STREAM_SKIPFIRST(logger, stream_arg) \
962  RCLCPP_LOG_STREAM_SKIPFIRST(RCUTILS_LOG_SEVERITY_WARN, logger, stream_arg)
963 
968 #define RCLCPP_WARN_STREAM_THROTTLE(logger, clock, duration, stream_arg) \
969  RCLCPP_LOG_STREAM_THROTTLE(RCUTILS_LOG_SEVERITY_WARN, logger, clock, duration, stream_arg)
970 
975 #define RCLCPP_WARN_STREAM_SKIPFIRST_THROTTLE(logger, clock, duration, stream_arg) \
976  RCLCPP_LOG_STREAM_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_WARN, logger, clock, duration, \
977  stream_arg)
978 
983 #define RCLCPP_WARN_FMT(logger, ...) RCLCPP_LOG_FMT(RCUTILS_LOG_SEVERITY_WARN, logger, __VA_ARGS__)
984 
989 #define RCLCPP_WARN_FMT_ONCE(logger, ...) \
990  RCLCPP_LOG_FMT_ONCE(RCUTILS_LOG_SEVERITY_WARN, logger, __VA_ARGS__)
991 
996 #define RCLCPP_WARN_FMT_EXPRESSION(logger, expression, ...) \
997  RCLCPP_LOG_FMT_EXPRESSION(RCUTILS_LOG_SEVERITY_WARN, logger, expression, __VA_ARGS__)
998 
1003 #define RCLCPP_WARN_FMT_FUNCTION(logger, function, ...) \
1004  RCLCPP_LOG_FMT_FUNCTION(RCUTILS_LOG_SEVERITY_WARN, logger, function, __VA_ARGS__)
1005 
1010 #define RCLCPP_WARN_FMT_SKIPFIRST(logger, ...) \
1011  RCLCPP_LOG_FMT_SKIPFIRST(RCUTILS_LOG_SEVERITY_WARN, logger, __VA_ARGS__)
1012 
1017 #define RCLCPP_WARN_FMT_THROTTLE(logger, clock, duration, ...) \
1018  RCLCPP_LOG_FMT_THROTTLE(RCUTILS_LOG_SEVERITY_WARN, logger, clock, duration, __VA_ARGS__)
1019 
1024 #define RCLCPP_WARN_FMT_SKIPFIRST_THROTTLE(logger, clock, duration, ...) \
1025  RCLCPP_LOG_FMT_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_WARN, logger, clock, duration, __VA_ARGS__)
1026 
1027 #endif
1028 
1031 #if (RCLCPP_LOG_MIN_SEVERITY > RCLCPP_LOG_MIN_SEVERITY_ERROR)
1032 // empty logging macros for severity ERROR when being disabled at compile time
1034 #define RCLCPP_ERROR(...)
1036 #define RCLCPP_ERROR_ONCE(...)
1038 #define RCLCPP_ERROR_EXPRESSION(...)
1040 #define RCLCPP_ERROR_FUNCTION(...)
1042 #define RCLCPP_ERROR_SKIPFIRST(...)
1044 #define RCLCPP_ERROR_THROTTLE(...)
1046 #define RCLCPP_ERROR_SKIPFIRST_THROTTLE(...)
1048 #define RCLCPP_ERROR_STREAM(...)
1050 #define RCLCPP_ERROR_STREAM_ONCE(...)
1052 #define RCLCPP_ERROR_STREAM_EXPRESSION(...)
1054 #define RCLCPP_ERROR_STREAM_FUNCTION(...)
1056 #define RCLCPP_ERROR_STREAM_SKIPFIRST(...)
1058 #define RCLCPP_ERROR_STREAM_THROTTLE(...)
1060 #define RCLCPP_ERROR_STREAM_SKIPFIRST_THROTTLE(...)
1062 #define RCLCPP_ERROR_FMT(...)
1064 #define RCLCPP_ERROR_FMT_ONCE(...)
1066 #define RCLCPP_ERROR_FMT_EXPRESSION(...)
1068 #define RCLCPP_ERROR_FMT_FUNCTION(...)
1070 #define RCLCPP_ERROR_FMT_SKIPFIRST(...)
1072 #define RCLCPP_ERROR_FMT_THROTTLE(...)
1074 #define RCLCPP_ERROR_FMT_SKIPFIRST_THROTTLE(...)
1075 
1076 #else
1081 #define RCLCPP_ERROR(logger, ...) RCLCPP_LOG(RCUTILS_LOG_SEVERITY_ERROR, logger, __VA_ARGS__)
1082 
1087 #define RCLCPP_ERROR_ONCE(logger, ...) \
1088  RCLCPP_LOG_ONCE(RCUTILS_LOG_SEVERITY_ERROR, logger, __VA_ARGS__)
1089 
1094 #define RCLCPP_ERROR_EXPRESSION(logger, expression, ...) \
1095  RCLCPP_LOG_EXPRESSION(RCUTILS_LOG_SEVERITY_ERROR, logger, expression, __VA_ARGS__)
1096 
1101 #define RCLCPP_ERROR_FUNCTION(logger, function, ...) \
1102  RCLCPP_LOG_FUNCTION(RCUTILS_LOG_SEVERITY_ERROR, logger, function, __VA_ARGS__)
1103 
1108 #define RCLCPP_ERROR_SKIPFIRST(logger, ...) \
1109  RCLCPP_LOG_SKIPFIRST(RCUTILS_LOG_SEVERITY_ERROR, logger, __VA_ARGS__)
1110 
1115 #define RCLCPP_ERROR_THROTTLE(logger, clock, duration, ...) \
1116  RCLCPP_LOG_THROTTLE(RCUTILS_LOG_SEVERITY_ERROR, logger, clock, duration, __VA_ARGS__)
1117 
1122 #define RCLCPP_ERROR_SKIPFIRST_THROTTLE(logger, clock, duration, ...) \
1123  RCLCPP_LOG_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_ERROR, logger, clock, duration, __VA_ARGS__)
1124 
1129 #define RCLCPP_ERROR_STREAM(logger, stream_arg) \
1130  RCLCPP_LOG_STREAM(RCUTILS_LOG_SEVERITY_ERROR, logger, stream_arg)
1131 
1136 #define RCLCPP_ERROR_STREAM_ONCE(logger, stream_arg) \
1137  RCLCPP_LOG_STREAM_ONCE(RCUTILS_LOG_SEVERITY_ERROR, logger, stream_arg)
1138 
1143 #define RCLCPP_ERROR_STREAM_EXPRESSION(logger, expression, stream_arg) \
1144  RCLCPP_LOG_STREAM_EXPRESSION(RCUTILS_LOG_SEVERITY_ERROR, logger, expression, stream_arg)
1145 
1150 #define RCLCPP_ERROR_STREAM_FUNCTION(logger, function, stream_arg) \
1151  RCLCPP_LOG_STREAM_FUNCTION(RCUTILS_LOG_SEVERITY_ERROR, logger, function, stream_args)
1152 
1157 #define RCLCPP_ERROR_STREAM_SKIPFIRST(logger, stream_arg) \
1158  RCLCPP_LOG_STREAM_SKIPFIRST(RCUTILS_LOG_SEVERITY_ERROR, logger, stream_arg)
1159 
1164 #define RCLCPP_ERROR_STREAM_THROTTLE(logger, clock, duration, stream_arg) \
1165  RCLCPP_LOG_STREAM_THROTTLE(RCUTILS_LOG_SEVERITY_ERROR, logger, clock, duration, stream_arg)
1166 
1171 #define RCLCPP_ERROR_STREAM_SKIPFIRST_THROTTLE(logger, clock, duration, stream_arg) \
1172  RCLCPP_LOG_STREAM_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_ERROR, logger, clock, duration, \
1173  stream_arg)
1174 
1179 #define RCLCPP_ERROR_FMT(logger, ...) \
1180  RCLCPP_LOG_FMT(RCUTILS_LOG_SEVERITY_ERROR, logger, __VA_ARGS__)
1181 
1186 #define RCLCPP_ERROR_FMT_ONCE(logger, ...) \
1187  RCLCPP_LOG_FMT_ONCE(RCUTILS_LOG_SEVERITY_ERROR, logger, __VA_ARGS__)
1188 
1193 #define RCLCPP_ERROR_FMT_EXPRESSION(logger, expression, ...) \
1194  RCLCPP_LOG_FMT_EXPRESSION(RCUTILS_LOG_SEVERITY_ERROR, logger, expression, __VA_ARGS__)
1195 
1200 #define RCLCPP_ERROR_FMT_FUNCTION(logger, function, ...) \
1201  RCLCPP_LOG_FMT_FUNCTION(RCUTILS_LOG_SEVERITY_ERROR, logger, function, __VA_ARGS__)
1202 
1207 #define RCLCPP_ERROR_FMT_SKIPFIRST(logger, ...) \
1208  RCLCPP_LOG_FMT_SKIPFIRST(RCUTILS_LOG_SEVERITY_ERROR, logger, __VA_ARGS__)
1209 
1214 #define RCLCPP_ERROR_FMT_THROTTLE(logger, clock, duration, ...) \
1215  RCLCPP_LOG_FMT_THROTTLE(RCUTILS_LOG_SEVERITY_ERROR, logger, clock, duration, __VA_ARGS__)
1216 
1221 #define RCLCPP_ERROR_FMT_SKIPFIRST_THROTTLE(logger, clock, duration, ...) \
1222  RCLCPP_LOG_FMT_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_ERROR, logger, clock, duration, \
1223  __VA_ARGS__)
1224 
1225 #endif
1226 
1229 #if (RCLCPP_LOG_MIN_SEVERITY > RCLCPP_LOG_MIN_SEVERITY_FATAL)
1230 // empty logging macros for severity FATAL when being disabled at compile time
1232 #define RCLCPP_FATAL(...)
1234 #define RCLCPP_FATAL_ONCE(...)
1236 #define RCLCPP_FATAL_EXPRESSION(...)
1238 #define RCLCPP_FATAL_FUNCTION(...)
1240 #define RCLCPP_FATAL_SKIPFIRST(...)
1242 #define RCLCPP_FATAL_THROTTLE(...)
1244 #define RCLCPP_FATAL_SKIPFIRST_THROTTLE(...)
1246 #define RCLCPP_FATAL_STREAM(...)
1248 #define RCLCPP_FATAL_STREAM_ONCE(...)
1250 #define RCLCPP_FATAL_STREAM_EXPRESSION(...)
1252 #define RCLCPP_FATAL_STREAM_FUNCTION(...)
1254 #define RCLCPP_FATAL_STREAM_SKIPFIRST(...)
1256 #define RCLCPP_FATAL_STREAM_THROTTLE(...)
1258 #define RCLCPP_FATAL_STREAM_SKIPFIRST_THROTTLE(...)
1260 #define RCLCPP_FATAL_FMT(...)
1262 #define RCLCPP_FATAL_FMT_ONCE(...)
1264 #define RCLCPP_FATAL_FMT_EXPRESSION(...)
1266 #define RCLCPP_FATAL_FMT_FUNCTION(...)
1268 #define RCLCPP_FATAL_FMT_SKIPFIRST(...)
1270 #define RCLCPP_FATAL_FMT_THROTTLE(...)
1272 #define RCLCPP_FATAL_FMT_SKIPFIRST_THROTTLE(...)
1273 
1274 #else
1279 #define RCLCPP_FATAL(logger, ...) RCLCPP_LOG(RCUTILS_LOG_SEVERITY_FATAL, logger, __VA_ARGS__)
1280 
1285 #define RCLCPP_FATAL_ONCE(logger, ...) \
1286  RCLCPP_LOG_ONCE(RCUTILS_LOG_SEVERITY_FATAL, logger, __VA_ARGS__)
1287 
1292 #define RCLCPP_FATAL_EXPRESSION(logger, expression, ...) \
1293  RCLCPP_LOG_EXPRESSION(RCUTILS_LOG_SEVERITY_FATAL, logger, expression, __VA_ARGS__)
1294 
1299 #define RCLCPP_FATAL_FUNCTION(logger, function, ...) \
1300  RCLCPP_LOG_FUNCTION(RCUTILS_LOG_SEVERITY_FATAL, logger, function, __VA_ARGS__)
1301 
1306 #define RCLCPP_FATAL_SKIPFIRST(logger, ...) \
1307  RCLCPP_LOG_SKIPFIRST(RCUTILS_LOG_SEVERITY_FATAL, logger, __VA_ARGS__)
1308 
1313 #define RCLCPP_FATAL_THROTTLE(logger, clock, duration, ...) \
1314  RCLCPP_LOG_THROTTLE(RCUTILS_LOG_SEVERITY_FATAL, logger, clock, duration, __VA_ARGS__)
1315 
1320 #define RCLCPP_FATAL_SKIPFIRST_THROTTLE(logger, clock, duration, ...) \
1321  RCLCPP_LOG_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_FATAL, logger, clock, duration, __VA_ARGS__)
1322 
1327 #define RCLCPP_FATAL_STREAM(logger, stream_arg) \
1328  RCLCPP_LOG_STREAM(RCUTILS_LOG_SEVERITY_FATAL, logger, stream_arg)
1329 
1334 #define RCLCPP_FATAL_STREAM_ONCE(logger, stream_arg) \
1335  RCLCPP_LOG_STREAM_ONCE(RCUTILS_LOG_SEVERITY_FATAL, logger, stream_arg)
1336 
1341 #define RCLCPP_FATAL_STREAM_EXPRESSION(logger, expression, stream_arg) \
1342  RCLCPP_LOG_STREAM_EXPRESSION(RCUTILS_LOG_SEVERITY_FATAL, logger, expression, stream_arg)
1343 
1348 #define RCLCPP_FATAL_STREAM_FUNCTION(logger, function, stream_arg) \
1349  RCLCPP_LOG_STREAM_FUNCTION(RCUTILS_LOG_SEVERITY_FATAL, logger, function, stream_args)
1350 
1355 #define RCLCPP_FATAL_STREAM_SKIPFIRST(logger, stream_arg) \
1356  RCLCPP_LOG_STREAM_SKIPFIRST(RCUTILS_LOG_SEVERITY_FATAL, logger, stream_arg)
1357 
1362 #define RCLCPP_FATAL_STREAM_THROTTLE(logger, clock, duration, stream_arg) \
1363  RCLCPP_LOG_STREAM_THROTTLE(RCUTILS_LOG_SEVERITY_FATAL, logger, clock, duration, stream_arg)
1364 
1369 #define RCLCPP_FATAL_STREAM_SKIPFIRST_THROTTLE(logger, clock, duration, stream_arg) \
1370  RCLCPP_LOG_STREAM_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_FATAL, logger, clock, duration, \
1371  stream_arg)
1372 
1377 #define RCLCPP_FATAL_FMT(logger, ...) \
1378  RCLCPP_LOG_FMT(RCUTILS_LOG_SEVERITY_FATAL, logger, __VA_ARGS__)
1379 
1384 #define RCLCPP_FATAL_FMT_ONCE(logger, ...) \
1385  RCLCPP_LOG_FMT_ONCE(RCUTILS_LOG_SEVERITY_FATAL, logger, __VA_ARGS__)
1386 
1391 #define RCLCPP_FATAL_FMT_EXPRESSION(logger, expression, ...) \
1392  RCLCPP_LOG_FMT_EXPRESSION(RCUTILS_LOG_SEVERITY_FATAL, logger, expression, __VA_ARGS__)
1393 
1398 #define RCLCPP_FATAL_FMT_FUNCTION(logger, function, ...) \
1399  RCLCPP_LOG_FMT_FUNCTION(RCUTILS_LOG_SEVERITY_FATAL, logger, function, __VA_ARGS__)
1400 
1405 #define RCLCPP_FATAL_FMT_SKIPFIRST(logger, ...) \
1406  RCLCPP_LOG_FMT_SKIPFIRST(RCUTILS_LOG_SEVERITY_FATAL, logger, __VA_ARGS__)
1407 
1412 #define RCLCPP_FATAL_FMT_THROTTLE(logger, clock, duration, ...) \
1413  RCLCPP_LOG_FMT_THROTTLE(RCUTILS_LOG_SEVERITY_FATAL, logger, clock, duration, __VA_ARGS__)
1414 
1419 #define RCLCPP_FATAL_FMT_SKIPFIRST_THROTTLE(logger, clock, duration, ...) \
1420  RCLCPP_LOG_FMT_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_FATAL, logger, clock, duration, \
1421  __VA_ARGS__)
1422 
1423 #endif
1424 
1425 #endif // RCLCPP__LOGGING_HPP_