Program Listing for File logging_macros.h
↰ Return to documentation for file (include/rcutils/logging_macros.h
)
// Copyright 2017 Open Source Robotics Foundation, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef RCUTILS__LOGGING_MACROS_H_
#define RCUTILS__LOGGING_MACROS_H_
#include "rcutils/logging.h"
#include <stdbool.h>
#ifdef __cplusplus
extern "C"
{
#endif
// These are used for compiling out logging macros lower than a minimum severity.
#define RCUTILS_LOG_MIN_SEVERITY_DEBUG 0
#define RCUTILS_LOG_MIN_SEVERITY_INFO 1
#define RCUTILS_LOG_MIN_SEVERITY_WARN 2
#define RCUTILS_LOG_MIN_SEVERITY_ERROR 3
#define RCUTILS_LOG_MIN_SEVERITY_FATAL 4
#define RCUTILS_LOG_MIN_SEVERITY_NONE 5
#ifndef RCUTILS_LOG_MIN_SEVERITY
#define RCUTILS_LOG_MIN_SEVERITY RCUTILS_LOG_MIN_SEVERITY_DEBUG
#endif
#define RCUTILS_LOG_NAMED(severity, name, ...) \
do { \
RCUTILS_LOGGING_AUTOINIT; \
static rcutils_log_location_t __rcutils_logging_location = {__func__, __FILE__, __LINE__}; \
if (rcutils_logging_logger_is_enabled_for(name, severity)) { \
rcutils_log_internal(&__rcutils_logging_location, severity, name, __VA_ARGS__); \
} \
} while (0)
#define RCUTILS_LOG(severity, ...) RCUTILS_LOG_NAMED(severity, NULL, __VA_ARGS__)
#define RCUTILS_LOG_ONCE_NAMED(severity, name, ...) \
do { \
RCUTILS_LOGGING_AUTOINIT; \
static rcutils_log_location_t __rcutils_logging_location = {__func__, __FILE__, __LINE__}; \
if (rcutils_logging_logger_is_enabled_for(name, severity)) { \
static int __rcutils_logging_once = 0; \
if (RCUTILS_UNLIKELY(0 == __rcutils_logging_once)) { \
__rcutils_logging_once = 1; \
rcutils_log_internal(&__rcutils_logging_location, severity, name, __VA_ARGS__); \
} \
} \
} while (0)
#define RCUTILS_LOG_ONCE(severity, ...) RCUTILS_LOG_ONCE_NAMED(severity, NULL, __VA_ARGS__)
#define RCUTILS_LOG_CONDITION_NAMED(severity, condition, name, ...) \
do { \
RCUTILS_LOGGING_AUTOINIT; \
static rcutils_log_location_t __rcutils_logging_location = {__func__, __FILE__, __LINE__}; \
if (rcutils_logging_logger_is_enabled_for(name, severity)) { \
if (condition) { \
rcutils_log_internal(&__rcutils_logging_location, severity, name, __VA_ARGS__); \
} \
} \
} while (0)
#define RCUTILS_LOG_EXPRESSION_NAMED(severity, expression, name, ...) \
RCUTILS_LOG_CONDITION_NAMED(severity, expression, name, __VA_ARGS__)
#define RCUTILS_LOG_EXPRESSION(severity, expression, ...) \
RCUTILS_LOG_CONDITION_NAMED(severity, expression, NULL, __VA_ARGS__)
#define RCUTILS_LOG_FUNCTION_NAMED(severity, function, name, ...) \
RCUTILS_LOG_CONDITION_NAMED(severity, (*function)(), name, __VA_ARGS__)
#define RCUTILS_LOG_FUNCTION(severity, function, ...) \
RCUTILS_LOG_CONDITION_NAMED(severity, (*function)(), NULL, __VA_ARGS__)
#define RCUTILS_LOG_SKIPFIRST_NAMED(severity, name, ...) \
do { \
RCUTILS_LOGGING_AUTOINIT; \
static rcutils_log_location_t __rcutils_logging_location = {__func__, __FILE__, __LINE__}; \
if (rcutils_logging_logger_is_enabled_for(name, severity)) { \
static bool __rcutils_logging_first = true; \
if (RCUTILS_UNLIKELY(true == __rcutils_logging_first)) { \
__rcutils_logging_first = false; \
} else { \
rcutils_log_internal(&__rcutils_logging_location, severity, name, __VA_ARGS__); \
} \
} \
} while (0)
#define RCUTILS_LOG_SKIPFIRST(severity, ...) \
RCUTILS_LOG_SKIPFIRST_NAMED(severity, NULL, __VA_ARGS__)
#define RCUTILS_LOG_THROTTLE_NAMED(severity, get_time_point, duration, name, ...) \
do { \
RCUTILS_LOGGING_AUTOINIT; \
static rcutils_log_location_t __rcutils_logging_location = {__func__, __FILE__, __LINE__}; \
if (rcutils_logging_logger_is_enabled_for(name, severity)) { \
static rcutils_duration_value_t __rcutils_logging_duration = RCUTILS_MS_TO_NS(duration); \
static rcutils_time_point_value_t __rcutils_logging_last_logged = 0; \
rcutils_time_point_value_t __rcutils_logging_now = 0; \
bool __rcutils_logging_condition = true; \
if (get_time_point(&__rcutils_logging_now) != RCUTILS_RET_OK) { \
rcutils_log( \
&__rcutils_logging_location, RCUTILS_LOG_SEVERITY_ERROR, "", \
"%s() at %s:%d getting current steady time failed\n", \
__func__, __FILE__, __LINE__); \
} else { \
__rcutils_logging_condition = __rcutils_logging_now >= \
__rcutils_logging_last_logged + __rcutils_logging_duration; \
} \
if (RCUTILS_LIKELY(__rcutils_logging_condition)) { \
__rcutils_logging_last_logged = __rcutils_logging_now; \
rcutils_log_internal(&__rcutils_logging_location, severity, name, __VA_ARGS__); \
} \
} \
} while (0)
#define RCUTILS_LOG_THROTTLE(severity, get_time_point, duration, ...) \
RCUTILS_LOG_THROTTLE_NAMED(severity, get_time_point, duration, NULL, __VA_ARGS__)
#define RCUTILS_LOG_SKIPFIRST_THROTTLE_NAMED(severity, get_time_point, duration, name, ...) \
do { \
RCUTILS_LOGGING_AUTOINIT; \
static rcutils_log_location_t __rcutils_logging_location = {__func__, __FILE__, __LINE__}; \
if (rcutils_logging_logger_is_enabled_for(name, severity)) { \
static rcutils_duration_value_t __rcutils_logging_duration = RCUTILS_MS_TO_NS(duration); \
static rcutils_time_point_value_t __rcutils_logging_last_logged = 0; \
rcutils_time_point_value_t __rcutils_logging_now = 0; \
bool __rcutils_logging_condition = true; \
if (get_time_point(&__rcutils_logging_now) != RCUTILS_RET_OK) { \
rcutils_log( \
&__rcutils_logging_location, RCUTILS_LOG_SEVERITY_ERROR, "", \
"%s() at %s:%d getting current steady time failed\n", \
__func__, __FILE__, __LINE__); \
} else { \
__rcutils_logging_condition = __rcutils_logging_now >= \
__rcutils_logging_last_logged + __rcutils_logging_duration; \
} \
if (RCUTILS_LIKELY(__rcutils_logging_condition)) { \
__rcutils_logging_last_logged = __rcutils_logging_now; \
static bool __rcutils_logging_first = true; \
if (RCUTILS_UNLIKELY(true == __rcutils_logging_first)) { \
__rcutils_logging_first = false; \
} else { \
rcutils_log_internal(&__rcutils_logging_location, severity, name, __VA_ARGS__); \
} \
} \
} \
} while (0)
#define RCUTILS_LOG_SKIPFIRST_THROTTLE(severity, get_time_point, duration, ...) \
RCUTILS_LOG_SKIPFIRST_THROTTLE_NAMED(severity, get_time_point, duration, NULL, __VA_ARGS__)
#if (RCUTILS_LOG_MIN_SEVERITY > RCUTILS_LOG_MIN_SEVERITY_DEBUG)
// empty logging macros for severity DEBUG when disabled at compile time
# define RCUTILS_LOG_DEBUG(format, ...)
# define RCUTILS_LOG_DEBUG_NAMED(name, format, ...)
# define RCUTILS_LOG_DEBUG_ONCE(format, ...)
# define RCUTILS_LOG_DEBUG_ONCE_NAMED(name, format, ...)
# define RCUTILS_LOG_DEBUG_EXPRESSION(expression, format, ...)
# define RCUTILS_LOG_DEBUG_EXPRESSION_NAMED(expression, name, format, ...)
# define RCUTILS_LOG_DEBUG_FUNCTION(function, format, ...)
# define RCUTILS_LOG_DEBUG_FUNCTION_NAMED(function, name, format, ...)
# define RCUTILS_LOG_DEBUG_SKIPFIRST(format, ...)
# define RCUTILS_LOG_DEBUG_SKIPFIRST_NAMED(name, format, ...)
# define RCUTILS_LOG_DEBUG_THROTTLE(get_time_point, duration, format, ...)
# define RCUTILS_LOG_DEBUG_SKIPFIRST_THROTTLE(get_time_point, duration, format, ...)
# define RCUTILS_LOG_DEBUG_THROTTLE_NAMED(get_time_point, duration, name, format, ...)
# define RCUTILS_LOG_DEBUG_SKIPFIRST_THROTTLE_NAMED(get_time_point, duration, name, format, ...)
#else
# define RCUTILS_LOG_DEBUG(...) RCUTILS_LOG(RCUTILS_LOG_SEVERITY_DEBUG, __VA_ARGS__)
# define RCUTILS_LOG_DEBUG_NAMED(name, ...) \
RCUTILS_LOG_NAMED(RCUTILS_LOG_SEVERITY_DEBUG, name, __VA_ARGS__)
# define RCUTILS_LOG_DEBUG_ONCE(...) RCUTILS_LOG_ONCE(RCUTILS_LOG_SEVERITY_DEBUG, __VA_ARGS__)
# define RCUTILS_LOG_DEBUG_ONCE_NAMED(name, ...) \
RCUTILS_LOG_ONCE_NAMED(RCUTILS_LOG_SEVERITY_DEBUG, name, __VA_ARGS__)
# define RCUTILS_LOG_DEBUG_EXPRESSION(expression, ...) \
RCUTILS_LOG_EXPRESSION(RCUTILS_LOG_SEVERITY_DEBUG, expression, __VA_ARGS__)
# define RCUTILS_LOG_DEBUG_EXPRESSION_NAMED(expression, name, ...) \
RCUTILS_LOG_EXPRESSION_NAMED(RCUTILS_LOG_SEVERITY_DEBUG, expression, name, __VA_ARGS__)
# define RCUTILS_LOG_DEBUG_FUNCTION(function, ...) \
RCUTILS_LOG_FUNCTION(RCUTILS_LOG_SEVERITY_DEBUG, function, __VA_ARGS__)
# define RCUTILS_LOG_DEBUG_FUNCTION_NAMED(function, name, ...) \
RCUTILS_LOG_FUNCTION_NAMED(RCUTILS_LOG_SEVERITY_DEBUG, function, name, __VA_ARGS__)
# define RCUTILS_LOG_DEBUG_SKIPFIRST(...) \
RCUTILS_LOG_SKIPFIRST(RCUTILS_LOG_SEVERITY_DEBUG, __VA_ARGS__)
# define RCUTILS_LOG_DEBUG_SKIPFIRST_NAMED(name, ...) \
RCUTILS_LOG_SKIPFIRST_NAMED(RCUTILS_LOG_SEVERITY_DEBUG, name, __VA_ARGS__)
# define RCUTILS_LOG_DEBUG_THROTTLE(get_time_point, duration, ...) \
RCUTILS_LOG_THROTTLE(RCUTILS_LOG_SEVERITY_DEBUG, get_time_point, duration, __VA_ARGS__)
# define RCUTILS_LOG_DEBUG_THROTTLE_NAMED(get_time_point, duration, name, ...) \
RCUTILS_LOG_THROTTLE_NAMED(RCUTILS_LOG_SEVERITY_DEBUG, get_time_point, duration, name, \
__VA_ARGS__)
# define RCUTILS_LOG_DEBUG_SKIPFIRST_THROTTLE(get_time_point, duration, ...) \
RCUTILS_LOG_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_DEBUG, get_time_point, duration, __VA_ARGS__)
# define RCUTILS_LOG_DEBUG_SKIPFIRST_THROTTLE_NAMED(get_time_point, duration, name, ...) \
RCUTILS_LOG_SKIPFIRST_THROTTLE_NAMED(RCUTILS_LOG_SEVERITY_DEBUG, get_time_point, duration, name, \
__VA_ARGS__)
#endif
#if (RCUTILS_LOG_MIN_SEVERITY > RCUTILS_LOG_MIN_SEVERITY_INFO)
// empty logging macros for severity INFO when disabled at compile time
# define RCUTILS_LOG_INFO(format, ...)
# define RCUTILS_LOG_INFO_NAMED(name, format, ...)
# define RCUTILS_LOG_INFO_ONCE(format, ...)
# define RCUTILS_LOG_INFO_ONCE_NAMED(name, format, ...)
# define RCUTILS_LOG_INFO_EXPRESSION(expression, format, ...)
# define RCUTILS_LOG_INFO_EXPRESSION_NAMED(expression, name, format, ...)
# define RCUTILS_LOG_INFO_FUNCTION(function, format, ...)
# define RCUTILS_LOG_INFO_FUNCTION_NAMED(function, name, format, ...)
# define RCUTILS_LOG_INFO_SKIPFIRST(format, ...)
# define RCUTILS_LOG_INFO_SKIPFIRST_NAMED(name, format, ...)
# define RCUTILS_LOG_INFO_THROTTLE(get_time_point, duration, format, ...)
# define RCUTILS_LOG_INFO_SKIPFIRST_THROTTLE(get_time_point, duration, format, ...)
# define RCUTILS_LOG_INFO_THROTTLE_NAMED(get_time_point, duration, name, format, ...)
# define RCUTILS_LOG_INFO_SKIPFIRST_THROTTLE_NAMED(get_time_point, duration, name, format, ...)
#else
# define RCUTILS_LOG_INFO(...) RCUTILS_LOG(RCUTILS_LOG_SEVERITY_INFO, __VA_ARGS__)
# define RCUTILS_LOG_INFO_NAMED(name, ...) \
RCUTILS_LOG_NAMED(RCUTILS_LOG_SEVERITY_INFO, name, __VA_ARGS__)
# define RCUTILS_LOG_INFO_ONCE(...) RCUTILS_LOG_ONCE(RCUTILS_LOG_SEVERITY_INFO, __VA_ARGS__)
# define RCUTILS_LOG_INFO_ONCE_NAMED(name, ...) \
RCUTILS_LOG_ONCE_NAMED(RCUTILS_LOG_SEVERITY_INFO, name, __VA_ARGS__)
# define RCUTILS_LOG_INFO_EXPRESSION(expression, ...) \
RCUTILS_LOG_EXPRESSION(RCUTILS_LOG_SEVERITY_INFO, expression, __VA_ARGS__)
# define RCUTILS_LOG_INFO_EXPRESSION_NAMED(expression, name, ...) \
RCUTILS_LOG_EXPRESSION_NAMED(RCUTILS_LOG_SEVERITY_INFO, expression, name, __VA_ARGS__)
# define RCUTILS_LOG_INFO_FUNCTION(function, ...) \
RCUTILS_LOG_FUNCTION(RCUTILS_LOG_SEVERITY_INFO, function, __VA_ARGS__)
# define RCUTILS_LOG_INFO_FUNCTION_NAMED(function, name, ...) \
RCUTILS_LOG_FUNCTION_NAMED(RCUTILS_LOG_SEVERITY_INFO, function, name, __VA_ARGS__)
# define RCUTILS_LOG_INFO_SKIPFIRST(...) \
RCUTILS_LOG_SKIPFIRST(RCUTILS_LOG_SEVERITY_INFO, __VA_ARGS__)
# define RCUTILS_LOG_INFO_SKIPFIRST_NAMED(name, ...) \
RCUTILS_LOG_SKIPFIRST_NAMED(RCUTILS_LOG_SEVERITY_INFO, name, __VA_ARGS__)
# define RCUTILS_LOG_INFO_THROTTLE(get_time_point, duration, ...) \
RCUTILS_LOG_THROTTLE(RCUTILS_LOG_SEVERITY_INFO, get_time_point, duration, __VA_ARGS__)
# define RCUTILS_LOG_INFO_THROTTLE_NAMED(get_time_point, duration, name, ...) \
RCUTILS_LOG_THROTTLE_NAMED(RCUTILS_LOG_SEVERITY_INFO, get_time_point, duration, name, __VA_ARGS__)
# define RCUTILS_LOG_INFO_SKIPFIRST_THROTTLE(get_time_point, duration, ...) \
RCUTILS_LOG_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_INFO, get_time_point, duration, __VA_ARGS__)
# define RCUTILS_LOG_INFO_SKIPFIRST_THROTTLE_NAMED(get_time_point, duration, name, ...) \
RCUTILS_LOG_SKIPFIRST_THROTTLE_NAMED(RCUTILS_LOG_SEVERITY_INFO, get_time_point, duration, name, \
__VA_ARGS__)
#endif
#if (RCUTILS_LOG_MIN_SEVERITY > RCUTILS_LOG_MIN_SEVERITY_WARN)
// empty logging macros for severity WARN when disabled at compile time
# define RCUTILS_LOG_WARN(format, ...)
# define RCUTILS_LOG_WARN_NAMED(name, format, ...)
# define RCUTILS_LOG_WARN_ONCE(format, ...)
# define RCUTILS_LOG_WARN_ONCE_NAMED(name, format, ...)
# define RCUTILS_LOG_WARN_EXPRESSION(expression, format, ...)
# define RCUTILS_LOG_WARN_EXPRESSION_NAMED(expression, name, format, ...)
# define RCUTILS_LOG_WARN_FUNCTION(function, format, ...)
# define RCUTILS_LOG_WARN_FUNCTION_NAMED(function, name, format, ...)
# define RCUTILS_LOG_WARN_SKIPFIRST(format, ...)
# define RCUTILS_LOG_WARN_SKIPFIRST_NAMED(name, format, ...)
# define RCUTILS_LOG_WARN_THROTTLE(get_time_point, duration, format, ...)
# define RCUTILS_LOG_WARN_SKIPFIRST_THROTTLE(get_time_point, duration, format, ...)
# define RCUTILS_LOG_WARN_THROTTLE_NAMED(get_time_point, duration, name, format, ...)
# define RCUTILS_LOG_WARN_SKIPFIRST_THROTTLE_NAMED(get_time_point, duration, name, format, ...)
#else
# define RCUTILS_LOG_WARN(...) RCUTILS_LOG(RCUTILS_LOG_SEVERITY_WARN, __VA_ARGS__)
# define RCUTILS_LOG_WARN_NAMED(name, ...) \
RCUTILS_LOG_NAMED(RCUTILS_LOG_SEVERITY_WARN, name, __VA_ARGS__)
# define RCUTILS_LOG_WARN_ONCE(...) RCUTILS_LOG_ONCE(RCUTILS_LOG_SEVERITY_WARN, __VA_ARGS__)
# define RCUTILS_LOG_WARN_ONCE_NAMED(name, ...) \
RCUTILS_LOG_ONCE_NAMED(RCUTILS_LOG_SEVERITY_WARN, name, __VA_ARGS__)
# define RCUTILS_LOG_WARN_EXPRESSION(expression, ...) \
RCUTILS_LOG_EXPRESSION(RCUTILS_LOG_SEVERITY_WARN, expression, __VA_ARGS__)
# define RCUTILS_LOG_WARN_EXPRESSION_NAMED(expression, name, ...) \
RCUTILS_LOG_EXPRESSION_NAMED(RCUTILS_LOG_SEVERITY_WARN, expression, name, __VA_ARGS__)
# define RCUTILS_LOG_WARN_FUNCTION(function, ...) \
RCUTILS_LOG_FUNCTION(RCUTILS_LOG_SEVERITY_WARN, function, __VA_ARGS__)
# define RCUTILS_LOG_WARN_FUNCTION_NAMED(function, name, ...) \
RCUTILS_LOG_FUNCTION_NAMED(RCUTILS_LOG_SEVERITY_WARN, function, name, __VA_ARGS__)
# define RCUTILS_LOG_WARN_SKIPFIRST(...) \
RCUTILS_LOG_SKIPFIRST(RCUTILS_LOG_SEVERITY_WARN, __VA_ARGS__)
# define RCUTILS_LOG_WARN_SKIPFIRST_NAMED(name, ...) \
RCUTILS_LOG_SKIPFIRST_NAMED(RCUTILS_LOG_SEVERITY_WARN, name, __VA_ARGS__)
# define RCUTILS_LOG_WARN_THROTTLE(get_time_point, duration, ...) \
RCUTILS_LOG_THROTTLE(RCUTILS_LOG_SEVERITY_WARN, get_time_point, duration, __VA_ARGS__)
# define RCUTILS_LOG_WARN_THROTTLE_NAMED(get_time_point, duration, name, ...) \
RCUTILS_LOG_THROTTLE_NAMED(RCUTILS_LOG_SEVERITY_WARN, get_time_point, duration, name, __VA_ARGS__)
# define RCUTILS_LOG_WARN_SKIPFIRST_THROTTLE(get_time_point, duration, ...) \
RCUTILS_LOG_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_WARN, get_time_point, duration, __VA_ARGS__)
# define RCUTILS_LOG_WARN_SKIPFIRST_THROTTLE_NAMED(get_time_point, duration, name, ...) \
RCUTILS_LOG_SKIPFIRST_THROTTLE_NAMED(RCUTILS_LOG_SEVERITY_WARN, get_time_point, duration, name, \
__VA_ARGS__)
#endif
#if (RCUTILS_LOG_MIN_SEVERITY > RCUTILS_LOG_MIN_SEVERITY_ERROR)
// empty logging macros for severity ERROR when disabled at compile time
# define RCUTILS_LOG_ERROR(format, ...)
# define RCUTILS_LOG_ERROR_NAMED(name, format, ...)
# define RCUTILS_LOG_ERROR_ONCE(format, ...)
# define RCUTILS_LOG_ERROR_ONCE_NAMED(name, format, ...)
# define RCUTILS_LOG_ERROR_EXPRESSION(expression, format, ...)
# define RCUTILS_LOG_ERROR_EXPRESSION_NAMED(expression, name, format, ...)
# define RCUTILS_LOG_ERROR_FUNCTION(function, format, ...)
# define RCUTILS_LOG_ERROR_FUNCTION_NAMED(function, name, format, ...)
# define RCUTILS_LOG_ERROR_SKIPFIRST(format, ...)
# define RCUTILS_LOG_ERROR_SKIPFIRST_NAMED(name, format, ...)
# define RCUTILS_LOG_ERROR_THROTTLE(get_time_point, duration, format, ...)
# define RCUTILS_LOG_ERROR_SKIPFIRST_THROTTLE(get_time_point, duration, format, ...)
# define RCUTILS_LOG_ERROR_THROTTLE_NAMED(get_time_point, duration, name, format, ...)
# define RCUTILS_LOG_ERROR_SKIPFIRST_THROTTLE_NAMED(get_time_point, duration, name, format, ...)
#else
# define RCUTILS_LOG_ERROR(...) RCUTILS_LOG(RCUTILS_LOG_SEVERITY_ERROR, __VA_ARGS__)
# define RCUTILS_LOG_ERROR_NAMED(name, ...) \
RCUTILS_LOG_NAMED(RCUTILS_LOG_SEVERITY_ERROR, name, __VA_ARGS__)
# define RCUTILS_LOG_ERROR_ONCE(...) RCUTILS_LOG_ONCE(RCUTILS_LOG_SEVERITY_ERROR, __VA_ARGS__)
# define RCUTILS_LOG_ERROR_ONCE_NAMED(name, ...) \
RCUTILS_LOG_ONCE_NAMED(RCUTILS_LOG_SEVERITY_ERROR, name, __VA_ARGS__)
# define RCUTILS_LOG_ERROR_EXPRESSION(expression, ...) \
RCUTILS_LOG_EXPRESSION(RCUTILS_LOG_SEVERITY_ERROR, expression, __VA_ARGS__)
# define RCUTILS_LOG_ERROR_EXPRESSION_NAMED(expression, name, ...) \
RCUTILS_LOG_EXPRESSION_NAMED(RCUTILS_LOG_SEVERITY_ERROR, expression, name, __VA_ARGS__)
# define RCUTILS_LOG_ERROR_FUNCTION(function, ...) \
RCUTILS_LOG_FUNCTION(RCUTILS_LOG_SEVERITY_ERROR, function, __VA_ARGS__)
# define RCUTILS_LOG_ERROR_FUNCTION_NAMED(function, name, ...) \
RCUTILS_LOG_FUNCTION_NAMED(RCUTILS_LOG_SEVERITY_ERROR, function, name, __VA_ARGS__)
# define RCUTILS_LOG_ERROR_SKIPFIRST(...) \
RCUTILS_LOG_SKIPFIRST(RCUTILS_LOG_SEVERITY_ERROR, __VA_ARGS__)
# define RCUTILS_LOG_ERROR_SKIPFIRST_NAMED(name, ...) \
RCUTILS_LOG_SKIPFIRST_NAMED(RCUTILS_LOG_SEVERITY_ERROR, name, __VA_ARGS__)
# define RCUTILS_LOG_ERROR_THROTTLE(get_time_point, duration, ...) \
RCUTILS_LOG_THROTTLE(RCUTILS_LOG_SEVERITY_ERROR, get_time_point, duration, __VA_ARGS__)
# define RCUTILS_LOG_ERROR_THROTTLE_NAMED(get_time_point, duration, name, ...) \
RCUTILS_LOG_THROTTLE_NAMED(RCUTILS_LOG_SEVERITY_ERROR, get_time_point, duration, name, \
__VA_ARGS__)
# define RCUTILS_LOG_ERROR_SKIPFIRST_THROTTLE(get_time_point, duration, ...) \
RCUTILS_LOG_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_ERROR, get_time_point, duration, __VA_ARGS__)
# define RCUTILS_LOG_ERROR_SKIPFIRST_THROTTLE_NAMED(get_time_point, duration, name, ...) \
RCUTILS_LOG_SKIPFIRST_THROTTLE_NAMED(RCUTILS_LOG_SEVERITY_ERROR, get_time_point, duration, name, \
__VA_ARGS__)
#endif
#if (RCUTILS_LOG_MIN_SEVERITY > RCUTILS_LOG_MIN_SEVERITY_FATAL)
// empty logging macros for severity FATAL when disabled at compile time
# define RCUTILS_LOG_FATAL(format, ...)
# define RCUTILS_LOG_FATAL_NAMED(name, format, ...)
# define RCUTILS_LOG_FATAL_ONCE(format, ...)
# define RCUTILS_LOG_FATAL_ONCE_NAMED(name, format, ...)
# define RCUTILS_LOG_FATAL_EXPRESSION(expression, format, ...)
# define RCUTILS_LOG_FATAL_EXPRESSION_NAMED(expression, name, format, ...)
# define RCUTILS_LOG_FATAL_FUNCTION(function, format, ...)
# define RCUTILS_LOG_FATAL_FUNCTION_NAMED(function, name, format, ...)
# define RCUTILS_LOG_FATAL_SKIPFIRST(format, ...)
# define RCUTILS_LOG_FATAL_SKIPFIRST_NAMED(name, format, ...)
# define RCUTILS_LOG_FATAL_THROTTLE(get_time_point, duration, format, ...)
# define RCUTILS_LOG_FATAL_SKIPFIRST_THROTTLE(get_time_point, duration, format, ...)
# define RCUTILS_LOG_FATAL_THROTTLE_NAMED(get_time_point, duration, name, format, ...)
# define RCUTILS_LOG_FATAL_SKIPFIRST_THROTTLE_NAMED(get_time_point, duration, name, format, ...)
#else
# define RCUTILS_LOG_FATAL(...) RCUTILS_LOG(RCUTILS_LOG_SEVERITY_FATAL, __VA_ARGS__)
# define RCUTILS_LOG_FATAL_NAMED(name, ...) \
RCUTILS_LOG_NAMED(RCUTILS_LOG_SEVERITY_FATAL, name, __VA_ARGS__)
# define RCUTILS_LOG_FATAL_ONCE(...) RCUTILS_LOG_ONCE(RCUTILS_LOG_SEVERITY_FATAL, __VA_ARGS__)
# define RCUTILS_LOG_FATAL_ONCE_NAMED(name, ...) \
RCUTILS_LOG_ONCE_NAMED(RCUTILS_LOG_SEVERITY_FATAL, name, __VA_ARGS__)
# define RCUTILS_LOG_FATAL_EXPRESSION(expression, ...) \
RCUTILS_LOG_EXPRESSION(RCUTILS_LOG_SEVERITY_FATAL, expression, __VA_ARGS__)
# define RCUTILS_LOG_FATAL_EXPRESSION_NAMED(expression, name, ...) \
RCUTILS_LOG_EXPRESSION_NAMED(RCUTILS_LOG_SEVERITY_FATAL, expression, name, __VA_ARGS__)
# define RCUTILS_LOG_FATAL_FUNCTION(function, ...) \
RCUTILS_LOG_FUNCTION(RCUTILS_LOG_SEVERITY_FATAL, function, __VA_ARGS__)
# define RCUTILS_LOG_FATAL_FUNCTION_NAMED(function, name, ...) \
RCUTILS_LOG_FUNCTION_NAMED(RCUTILS_LOG_SEVERITY_FATAL, function, name, __VA_ARGS__)
# define RCUTILS_LOG_FATAL_SKIPFIRST(...) \
RCUTILS_LOG_SKIPFIRST(RCUTILS_LOG_SEVERITY_FATAL, __VA_ARGS__)
# define RCUTILS_LOG_FATAL_SKIPFIRST_NAMED(name, ...) \
RCUTILS_LOG_SKIPFIRST_NAMED(RCUTILS_LOG_SEVERITY_FATAL, name, __VA_ARGS__)
# define RCUTILS_LOG_FATAL_THROTTLE(get_time_point, duration, ...) \
RCUTILS_LOG_THROTTLE(RCUTILS_LOG_SEVERITY_FATAL, get_time_point, duration, __VA_ARGS__)
# define RCUTILS_LOG_FATAL_THROTTLE_NAMED(get_time_point, duration, name, ...) \
RCUTILS_LOG_THROTTLE_NAMED(RCUTILS_LOG_SEVERITY_FATAL, get_time_point, duration, name, \
__VA_ARGS__)
# define RCUTILS_LOG_FATAL_SKIPFIRST_THROTTLE(get_time_point, duration, ...) \
RCUTILS_LOG_SKIPFIRST_THROTTLE(RCUTILS_LOG_SEVERITY_FATAL, get_time_point, duration, __VA_ARGS__)
# define RCUTILS_LOG_FATAL_SKIPFIRST_THROTTLE_NAMED(get_time_point, duration, name, ...) \
RCUTILS_LOG_SKIPFIRST_THROTTLE_NAMED(RCUTILS_LOG_SEVERITY_FATAL, get_time_point, duration, name, \
__VA_ARGS__)
#endif
#ifdef __cplusplus
}
#endif
#endif // RCUTILS__LOGGING_MACROS_H_