41 #define _PX4_LOG_LEVEL_DEBUG 0 42 #define _PX4_LOG_LEVEL_INFO 1 43 #define _PX4_LOG_LEVEL_WARN 2 44 #define _PX4_LOG_LEVEL_ERROR 3 45 #define _PX4_LOG_LEVEL_PANIC 4 48 static inline void do_nothing(
int level, ...)
66 #define __px4_log_omit(level, FMT, ...) do_nothing(level, ##__VA_ARGS__) 68 #if defined(__PX4_QURT) 73 #define PX4_INFO(FMT, ...) qurt_log(_PX4_LOG_LEVEL_INFO, __FILE__, __LINE__, FMT, ##__VA_ARGS__) 74 #define PX4_INFO_RAW(FMT, ...) __px4_log_omit(_PX4_LOG_LEVEL_INFO, FMT, ##__VA_ARGS__) 75 #define PX4_BACKTRACE() 77 #if defined(TRACE_BUILD) 81 #define PX4_PANIC(FMT, ...) qurt_log(_PX4_LOG_LEVEL_PANIC, __FILE__, __LINE__, FMT, ##__VA_ARGS__) 82 #define PX4_ERR(FMT, ...) qurt_log(_PX4_LOG_LEVEL_ERROR, __FILE__, __LINE__, FMT, ##__VA_ARGS__) 83 #define PX4_WARN(FMT, ...) qurt_log(_PX4_LOG_LEVEL_WARN, __FILE__, __LINE__, FMT, ##__VA_ARGS__) 84 #define PX4_DEBUG(FMT, ...) qurt_log(_PX4_LOG_LEVEL_DEBUG, __FILE__, __LINE__, FMT, ##__VA_ARGS__) 86 #elif defined(DEBUG_BUILD) 90 #define PX4_PANIC(FMT, ...) qurt_log(_PX4_LOG_LEVEL_PANIC, __FILE__, __LINE__, FMT, ##__VA_ARGS__) 91 #define PX4_ERR(FMT, ...) qurt_log(_PX4_LOG_LEVEL_ERROR, __FILE__, __LINE__, FMT, ##__VA_ARGS__) 92 #define PX4_WARN(FMT, ...) qurt_log(_PX4_LOG_LEVEL_WARN, __FILE__, __LINE__, FMT, ##__VA_ARGS__) 93 #define PX4_DEBUG(FMT, ...) qurt_log(_PX4_LOG_LEVEL_DEBUG, __FILE__, __LINE__, FMT, ##__VA_ARGS__) 95 #elif defined(RELEASE_BUILD) 99 #define PX4_PANIC(FMT, ...) qurt_log(_PX4_LOG_LEVEL_PANIC, __FILE__, __LINE__, FMT, ##__VA_ARGS__) 100 #define PX4_ERR(FMT, ...) qurt_log(_PX4_LOG_LEVEL_ERROR, __FILE__, __LINE__, FMT, ##__VA_ARGS__) 101 #define PX4_WARN(FMT, ...) __px4_log_omit(_PX4_LOG_LEVEL_WARN, FMT, ##__VA_ARGS__) 102 #define PX4_DEBUG(FMT, ...) __px4_log_omit(_PX4_LOG_LEVEL_DEBUG, FMT, ##__VA_ARGS__) 108 #define PX4_PANIC(FMT, ...) qurt_log(_PX4_LOG_LEVEL_PANIC, __FILE__, __LINE__, FMT, ##__VA_ARGS__) 109 #define PX4_ERR(FMT, ...) qurt_log(_PX4_LOG_LEVEL_ERROR, __FILE__, __LINE__, FMT, ##__VA_ARGS__) 110 #define PX4_WARN(FMT, ...) qurt_log(_PX4_LOG_LEVEL_WARN, __FILE__, __LINE__, FMT, ##__VA_ARGS__) 111 #define PX4_DEBUG(FMT, ...) __px4_log_omit(_PX4_LOG_LEVEL_DEBUG, FMT, ##__VA_ARGS__) 114 #define PX4_LOG_NAMED(name, FMT, ...) qurt_log( _PX4_LOG_LEVEL_INFO, __FILE__, __LINE__, "%s " FMT, name, ##__VA_ARGS__) 115 #define PX4_LOG_NAMED_COND(name, cond, FMT, ...) if( cond ) qurt_log( _PX4_LOG_LEVEL_INFO, __FILE__, __LINE__, "%s " FMT, name, ##__VA_ARGS__) 119 #include <inttypes.h> 121 #include <sys/cdefs.h> 129 __EXPORT extern const char *__px4_log_level_str[_PX4_LOG_LEVEL_PANIC + 1];
130 __EXPORT extern const char *__px4_log_level_color[_PX4_LOG_LEVEL_PANIC + 1];
131 __EXPORT extern void px4_backtrace(
void);
132 __EXPORT void px4_log_modulename(
int level,
const char *moduleName,
const char *fmt, ...)
134 __EXPORT void px4_log_raw(
int level, const
char *fmt, ...)
139 #pragma GCC diagnostic ignored "-Wformat-zero-length" 144 #define PX4_BACKTRACE() px4_backtrace() 156 #define __px4__log_printcond(cond, ...) if (cond) printf(__VA_ARGS__) 157 #define __px4__log_printline(level, ...) printf(__VA_ARGS__) 159 #define __px4__log_timestamp_fmt "%-10" PRIu64 " " 160 #define __px4__log_timestamp_arg ,hrt_absolute_time() 161 #define __px4__log_level_fmt "%-5s " 162 #define __px4__log_level_arg(level) ,__px4_log_level_str[level] 163 #define __px4__log_thread_fmt "%#X " 164 #define __px4__log_thread_arg ,(unsigned int)pthread_self() 165 #define __px4__log_modulename_fmt "%-10s " 166 #define __px4__log_modulename_pfmt "[%s] " 167 #define __px4__log_modulename_arg ,"[" MODULE_NAME "]" 169 #define __px4__log_file_and_line_fmt " (file %s line %u)" 170 #define __px4__log_file_and_line_arg , __FILE__, __LINE__ 171 #define __px4__log_end_fmt "\n" 173 #define PX4_ANSI_COLOR_RED "\x1b[31m" 174 #define PX4_ANSI_COLOR_GREEN "\x1b[32m" 175 #define PX4_ANSI_COLOR_YELLOW "\x1b[33m" 176 #define PX4_ANSI_COLOR_BLUE "\x1b[34m" 177 #define PX4_ANSI_COLOR_MAGENTA "\x1b[35m" 178 #define PX4_ANSI_COLOR_CYAN "\x1b[36m" 179 #define PX4_ANSI_COLOR_GRAY "\x1B[37m" 180 #define PX4_ANSI_COLOR_RESET "\x1b[0m" 183 #define PX4_LOG_COLORIZED_OUTPUT //if defined and output is a tty, colorize the output according to the log level 201 #define __px4_log_named_cond(name, cond, FMT, ...) \ 202 __px4__log_printcond(cond,\ 206 ,name, ##__VA_ARGS__\ 216 #define __px4_log(level, FMT, ...) \ 217 __px4__log_printline(level,\ 218 __px4__log_level_fmt \ 221 __px4__log_level_arg(level), ##__VA_ARGS__\ 233 #define __px4_log_modulename(level, fmt, ...) \ 235 px4_log_modulename(level, MODULE_NAME, fmt, ##__VA_ARGS__); \ 247 #define __px4_log_raw(level, fmt, ...) \ 249 px4_log_raw(level, fmt, ##__VA_ARGS__); \ 261 #define __px4_log_timestamp(level, FMT, ...) \ 262 __px4__log_printline(level,\ 263 __px4__log_level_fmt\ 264 __px4__log_timestamp_fmt\ 267 __px4__log_level_arg(level)\ 268 __px4__log_timestamp_arg\ 280 #define __px4_log_timestamp_thread(level, FMT, ...) \ 281 __px4__log_printline(level,\ 282 __px4__log_level_fmt\ 283 __px4__log_timestamp_fmt\ 284 __px4__log_thread_fmt\ 287 __px4__log_level_arg(level)\ 288 __px4__log_timestamp_arg\ 289 __px4__log_thread_arg\ 301 #define __px4_log_file_and_line(level, FMT, ...) \ 302 __px4__log_printline(level,\ 303 __px4__log_level_fmt\ 304 __px4__log_timestamp_fmt\ 306 __px4__log_file_and_line_fmt\ 308 __px4__log_level_arg(level)\ 309 __px4__log_timestamp_arg\ 311 __px4__log_file_and_line_arg\ 323 #define __px4_log_timestamp_file_and_line(level, FMT, ...) \ 324 __px4__log_printline(level,\ 325 __px4__log_level_fmt\ 326 __px4__log_timestamp_fmt\ 328 __px4__log_file_and_line_fmt\ 330 __px4__log_level_arg(level)\ 331 __px4__log_timestamp_arg\ 333 __px4__log_file_and_line_arg\ 345 #define __px4_log_thread_file_and_line(level, FMT, ...) \ 346 __px4__log_printline(level,\ 347 __px4__log_level_fmt\ 348 __px4__log_thread_fmt\ 350 __px4__log_file_and_line_fmt\ 352 __px4__log_level_arg(level)\ 353 __px4__log_thread_arg\ 355 __px4__log_file_and_line_arg\ 367 #define __px4_log_timestamp_thread_file_and_line(level, FMT, ...) \ 368 __px4__log_printline(level,\ 369 __px4__log_level_fmt\ 370 __px4__log_timestamp_fmt\ 371 __px4__log_thread_fmt\ 373 __px4__log_file_and_line_fmt\ 375 __px4__log_level_arg(level)\ 376 __px4__log_timestamp_arg\ 377 __px4__log_thread_arg\ 379 __px4__log_file_and_line_arg\ 391 #define PX4_INFO(FMT, ...) __px4_log_modulename(_PX4_LOG_LEVEL_INFO, FMT, ##__VA_ARGS__) 394 #define PX4_INFO_RAW printf 396 #define PX4_INFO_RAW(FMT, ...) __px4_log_raw(_PX4_LOG_LEVEL_INFO, FMT, ##__VA_ARGS__) 399 #if defined(TRACE_BUILD) 403 #define PX4_PANIC(FMT, ...) __px4_log_timestamp_thread_file_and_line(_PX4_LOG_LEVEL_PANIC, FMT, ##__VA_ARGS__) 404 #define PX4_ERR(FMT, ...) __px4_log_timestamp_thread_file_and_line(_PX4_LOG_LEVEL_ERROR, FMT, ##__VA_ARGS__) 405 #define PX4_WARN(FMT, ...) __px4_log_timestamp_thread_file_and_line(_PX4_LOG_LEVEL_WARN, FMT, ##__VA_ARGS__) 406 #define PX4_DEBUG(FMT, ...) __px4_log_timestamp_thread(_PX4_LOG_LEVEL_DEBUG, FMT, ##__VA_ARGS__) 408 #elif defined(DEBUG_BUILD) 412 #define PX4_PANIC(FMT, ...) __px4_log_timestamp_file_and_line(_PX4_LOG_LEVEL_PANIC, FMT, ##__VA_ARGS__) 413 #define PX4_ERR(FMT, ...) __px4_log_timestamp_file_and_line(_PX4_LOG_LEVEL_ERROR, FMT, ##__VA_ARGS__) 414 #define PX4_WARN(FMT, ...) __px4_log_timestamp_file_and_line(_PX4_LOG_LEVEL_WARN, FMT, ##__VA_ARGS__) 415 #define PX4_DEBUG(FMT, ...) __px4_log_timestamp(_PX4_LOG_LEVEL_DEBUG, FMT, ##__VA_ARGS__) 417 #elif defined(RELEASE_BUILD) 421 #define PX4_PANIC(FMT, ...) __px4_log_modulename(_PX4_LOG_LEVEL_PANIC, FMT, ##__VA_ARGS__) 422 #define PX4_ERR(FMT, ...) __px4_log_modulename(_PX4_LOG_LEVEL_ERROR, FMT, ##__VA_ARGS__) 423 #define PX4_WARN(FMT, ...) __px4_log_omit(_PX4_LOG_LEVEL_WARN, FMT, ##__VA_ARGS__) 424 #define PX4_DEBUG(FMT, ...) __px4_log_omit(_PX4_LOG_LEVEL_DEBUG, FMT, ##__VA_ARGS__) 430 #define PX4_PANIC(FMT, ...) __px4_log_modulename(_PX4_LOG_LEVEL_PANIC, FMT, ##__VA_ARGS__) 431 #define PX4_ERR(FMT, ...) __px4_log_modulename(_PX4_LOG_LEVEL_ERROR, FMT, ##__VA_ARGS__) 432 #define PX4_WARN(FMT, ...) __px4_log_modulename(_PX4_LOG_LEVEL_WARN, FMT, ##__VA_ARGS__) 433 #define PX4_DEBUG(FMT, ...) __px4_log_omit(_PX4_LOG_LEVEL_DEBUG, FMT, ##__VA_ARGS__) 436 #define PX4_LOG_NAMED(name, FMT, ...) __px4_log_named_cond(name, true, FMT, ##__VA_ARGS__) 437 #define PX4_LOG_NAMED_COND(name, cond, FMT, ...) __px4_log_named_cond(name, cond, FMT, ##__VA_ARGS__)
Generally used magic defines.
__BEGIN_DECLS __EXPORT void px4_log_initialize(void)
initialize the orb logging.
Definition: px4_log.c:62