119#if defined(__cplusplus) && __cplusplus >= 201103L
121 "rcl_log_severity_t must be int-sized: the Rust mirror is repr(transparent) "
125#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
127 "rcl_log_severity_t must be int-sized: the Rust mirror is repr(transparent) "
131 "rcl_log_severity_t must stay on rcutils's numbering");
163 __attribute__((format(printf, 3, 4)));
182 size_t message_len, const
char* file, uint32_t line);
191#define NROS_LOG_FMT_BUFFER_SIZE 256
204 uint32_t line,
const char* fmt, ...)
205 __attribute__((format(printf, 5, 6)));
216#define RCLC_LOG_TRACE(logger, ...) \
217 rclc_log_emit_fmt_at((logger), RCLC_LOG_SEVERITY_TRACE, __FILE__, (uint32_t)__LINE__, \
219#define RCLC_LOG_DEBUG(logger, ...) \
220 rclc_log_emit_fmt_at((logger), RCLC_LOG_SEVERITY_DEBUG, __FILE__, (uint32_t)__LINE__, \
222#define RCLC_LOG_INFO(logger, ...) \
223 rclc_log_emit_fmt_at((logger), RCLC_LOG_SEVERITY_INFO, __FILE__, (uint32_t)__LINE__, \
225#define RCLC_LOG_WARN(logger, ...) \
226 rclc_log_emit_fmt_at((logger), RCLC_LOG_SEVERITY_WARN, __FILE__, (uint32_t)__LINE__, \
228#define RCLC_LOG_ERROR(logger, ...) \
229 rclc_log_emit_fmt_at((logger), RCLC_LOG_SEVERITY_ERROR, __FILE__, (uint32_t)__LINE__, \
231#define RCLC_LOG_FATAL(logger, ...) \
232 rclc_log_emit_fmt_at((logger), RCLC_LOG_SEVERITY_FATAL, __FILE__, (uint32_t)__LINE__, \
399 const char* logger_name,
size_t logger_name_len,
400 const char* message,
size_t message_len,
const char* file,
401 size_t file_len, uint32_t line, uint64_t timestamp_ns);
474#define RCLC_LOG_THROTTLE_AT(logger, severity, interval_ms, ...) \
476 static uint64_t _nros_log_throttle_last = 0; \
477 if (rclc_logger_is_enabled((logger), (severity)) && \
478 rclc_log_throttle_admit(&_nros_log_throttle_last, (uint64_t)(interval_ms))) { \
479 rclc_log_emit_fmt_at((logger), (severity), __FILE__, (uint32_t)__LINE__, __VA_ARGS__); \
483#define RCLC_LOG_TRACE_THROTTLE(logger, interval_ms, ...) \
484 RCLC_LOG_THROTTLE_AT((logger), RCLC_LOG_SEVERITY_TRACE, (interval_ms), __VA_ARGS__)
485#define RCLC_LOG_DEBUG_THROTTLE(logger, interval_ms, ...) \
486 RCLC_LOG_THROTTLE_AT((logger), RCLC_LOG_SEVERITY_DEBUG, (interval_ms), __VA_ARGS__)
487#define RCLC_LOG_INFO_THROTTLE(logger, interval_ms, ...) \
488 RCLC_LOG_THROTTLE_AT((logger), RCLC_LOG_SEVERITY_INFO, (interval_ms), __VA_ARGS__)
489#define RCLC_LOG_WARN_THROTTLE(logger, interval_ms, ...) \
490 RCLC_LOG_THROTTLE_AT((logger), RCLC_LOG_SEVERITY_WARN, (interval_ms), __VA_ARGS__)
491#define RCLC_LOG_ERROR_THROTTLE(logger, interval_ms, ...) \
492 RCLC_LOG_THROTTLE_AT((logger), RCLC_LOG_SEVERITY_ERROR, (interval_ms), __VA_ARGS__)
493#define RCLC_LOG_FATAL_THROTTLE(logger, interval_ms, ...) \
494 RCLC_LOG_THROTTLE_AT((logger), RCLC_LOG_SEVERITY_FATAL, (interval_ms), __VA_ARGS__)
rclc_logger_t rclc_logger_get_child(rclc_logger_t logger, const char *suffix)
rcl_log_severity_t rclc_log_get_default_level(void)
void rclc_log_set_default_level(rcl_log_severity_t severity)
void rclc_log_emit_fmt(rclc_logger_t logger, rcl_log_severity_t severity, const char *fmt,...) __attribute__((format(printf
rcl_log_severity_t rclc_logger_get_level(rclc_logger_t logger)
void void rclc_log_emit_at(rclc_logger_t logger, rcl_log_severity_t severity, const char *message, size_t message_len, const char *file, uint32_t line)
void rclc_log_emit(rclc_logger_t logger, rcl_log_severity_t severity, const char *message, size_t message_len)
void(* rclc_log_sink_fn)(void *user_data, rcl_log_severity_t severity, const char *logger_name, size_t logger_name_len, const char *message, size_t message_len, const char *file, size_t file_len, uint32_t line, uint64_t timestamp_ns)
Definition log.h:398
size_t rclc_logger_get_name(rclc_logger_t logger, char *buf, size_t buf_len)
const void * rclc_logger_t
Definition log.h:138
bool rclc_log_timestamp_available(void)
bool rclc_log_add_sink(rclc_log_sink_fn sink, void *user_data)
rclc_logger_t rclc_log_default_logger(void)
rcl_log_severity_t
Definition log.h:87
@ RCLC_LOG_SEVERITY_FORCE_INT_WIDTH_
Definition log.h:109
@ RCLC_LOG_SEVERITY_FATAL
Definition log.h:94
@ RCLC_LOG_SEVERITY_ERROR
Definition log.h:93
@ RCLC_LOG_SEVERITY_DEBUG
Definition log.h:90
@ RCLC_LOG_SEVERITY_TRACE
Definition log.h:89
@ RCLC_LOG_SEVERITY_UNSET
Definition log.h:88
@ RCLC_LOG_SEVERITY_WARN
Definition log.h:92
@ RCLC_LOG_SEVERITY_INFO
Definition log.h:91
bool rclc_logger_set_level(rclc_logger_t logger, rcl_log_severity_t severity)
bool rclc_logger_is_enabled(rclc_logger_t logger, rcl_log_severity_t severity)
bool rclc_log_throttle_admit(uint64_t *last_ns, uint64_t interval_ms)
void rclc_log_emit_fmt_at(rclc_logger_t logger, rcl_log_severity_t severity, const char *file, uint32_t line, const char *fmt,...) __attribute__((format(printf
rclc_logger_t rclc_log_get_logger(const char *name)