UCX++
debug.h
1#pragma once
2
3#include <cstdio>
4
5#ifndef SOURCE_PATH_LENGTH
6#define SOURCE_PATH_LENGTH 0
7#endif
8
9#define __UCXPP_FILENAME__ (&__FILE__[SOURCE_PATH_LENGTH])
10
11namespace ucxpp {
12
13enum class LogLevel {
14 TRACE,
15 DEBUG,
16 INFO,
17 WARN,
18 ERROR,
19};
20}
21
22constexpr static inline ucxpp::LogLevel ucxpp_log_level =
23 ucxpp::LogLevel::DEBUG;
24
25#define UCXPP_LOG_TRACE(msg, ...) \
26 do { \
27 if (ucxpp_log_level > ucxpp::LogLevel::TRACE) \
28 break; \
29 printf("[TRACE] [%s:%d] " msg "\n", __UCXPP_FILENAME__, \
30 __LINE__ __VA_OPT__(, ) __VA_ARGS__); \
31 } while (0)
32
33#define UCXPP_LOG_DEBUG(msg, ...) \
34 do { \
35 if (ucxpp_log_level > ucxpp::LogLevel::DEBUG) \
36 break; \
37 printf("[DEBUG] [%s:%d] " msg "\n", __UCXPP_FILENAME__, \
38 __LINE__ __VA_OPT__(, ) __VA_ARGS__); \
39 } while (0)
40
41#define UCXPP_LOG_INFO(msg, ...) \
42 do { \
43 if (ucxpp_log_level > ucxpp::LogLevel::INFO) \
44 break; \
45 printf("[INFO ] [%s:%d] " msg "\n", __UCXPP_FILENAME__, \
46 __LINE__ __VA_OPT__(, ) __VA_ARGS__); \
47 } while (0)
48
49#define UCXPP_LOG_ERROR(msg, ...) \
50 do { \
51 printf("[ERROR] [%s:%d] " msg "\n", __UCXPP_FILENAME__, \
52 __LINE__ __VA_OPT__(, ) __VA_ARGS__); \
53 } while (0)