All Classes Namespaces Functions Variables Typedefs Enumerations Friends
log.h
1 
5 #pragma once
6 
7 #include <string>
8 #include <unordered_map>
9 
10 #include <ucs/debug/log_def.h>
11 
12 #include <ucxx/typedefs.h>
13 
14 namespace ucxx {
15 
21 extern ucs_log_component_config_t ucxx_log_component_config;
22 
23 // Macros
24 #ifndef UCXX_MAX_LOG_LEVEL
25 #define UCXX_MAX_LOG_LEVEL ucxx::UCXX_LOG_LEVEL_LAST
26 #endif
27 
28 #define ucxx_log_component_is_enabled(_level, _comp_log_config) \
29  ucs_unlikely( \
30  ((_level) <= UCXX_MAX_LOG_LEVEL) && \
31  ((_level) <= (ucxx::ucxx_log_level_t)( \
32  reinterpret_cast<ucs_log_component_config_t*>(_comp_log_config)->log_level)))
33 
34 #define ucxx_log_is_enabled(_level) \
35  ucxx_log_component_is_enabled(_level, &ucxx::ucxx_log_component_config)
36 
37 #define ucxx_log_component(_level, _comp_log_config, _fmt, ...) \
38  do { \
39  if (ucxx_log_component_is_enabled(_level, _comp_log_config)) { \
40  ucs_log_dispatch(__FILE__, \
41  __LINE__, \
42  __func__, \
43  (ucs_log_level_t)(_level), \
44  _comp_log_config, \
45  _fmt, \
46  ##__VA_ARGS__); \
47  } \
48  } while (0)
49 
50 #define ucxx_log(_level, _fmt, ...) \
51  do { \
52  ucxx_log_component(_level, &ucxx::ucxx_log_component_config, _fmt, ##__VA_ARGS__); \
53  } while (0)
54 
55 #define ucxx_error(_fmt, ...) ucxx_log(ucxx::UCXX_LOG_LEVEL_ERROR, _fmt, ##__VA_ARGS__)
56 #define ucxx_warn(_fmt, ...) ucxx_log(ucxx::UCXX_LOG_LEVEL_WARN, _fmt, ##__VA_ARGS__)
57 #define ucxx_diag(_fmt, ...) ucxx_log(ucxx::UCXX_LOG_LEVEL_DIAG, _fmt, ##__VA_ARGS__)
58 #define ucxx_info(_fmt, ...) ucxx_log(ucxx::UCXX_LOG_LEVEL_INFO, _fmt, ##__VA_ARGS__)
59 #define ucxx_debug(_fmt, ...) ucxx_log(ucxx::UCXX_LOG_LEVEL_DEBUG, _fmt, ##__VA_ARGS__)
60 #define ucxx_trace(_fmt, ...) ucxx_log(ucxx::UCXX_LOG_LEVEL_TRACE, _fmt, ##__VA_ARGS__)
61 #define ucxx_trace_req(_fmt, ...) ucxx_log(ucxx::UCXX_LOG_LEVEL_TRACE_REQ, _fmt, ##__VA_ARGS__)
62 #define ucxx_trace_data(_fmt, ...) ucxx_log(ucxx::UCXX_LOG_LEVEL_TRACE_DATA, _fmt, ##__VA_ARGS__)
63 #define ucxx_trace_async(_fmt, ...) ucxx_log(ucxx::UCXX_LOG_LEVEL_TRACE_ASYNC, _fmt, ##__VA_ARGS__)
64 #define ucxx_trace_func(_fmt, ...) \
65  ucxx_log(ucxx::UCXX_LOG_LEVEL_TRACE_FUNC, "%s(" _fmt ")", __FUNCTION__, ##__VA_ARGS__)
66 #define ucxx_trace_poll(_fmt, ...) ucxx_log(ucxx::UCXX_LOG_LEVEL_TRACE_POLL, _fmt, ##__VA_ARGS__)
67 
74 const std::unordered_map<std::string, ucxx_log_level_t> logLevelNames = {
75  {"FATAL", UCXX_LOG_LEVEL_FATAL},
76  {"ERROR", UCXX_LOG_LEVEL_ERROR},
77  {"WARN", UCXX_LOG_LEVEL_WARN},
78  {"DIAG", UCXX_LOG_LEVEL_DIAG},
79  {"INFO", UCXX_LOG_LEVEL_INFO},
80  {"DEBUG", UCXX_LOG_LEVEL_DEBUG},
81  {"TRACE", UCXX_LOG_LEVEL_TRACE},
82  {"REQ", UCXX_LOG_LEVEL_TRACE_REQ},
83  {"DATA", UCXX_LOG_LEVEL_TRACE_DATA},
84  {"ASYNC", UCXX_LOG_LEVEL_TRACE_ASYNC},
85  {"FUNC", UCXX_LOG_LEVEL_TRACE_FUNC},
86  {"POLL", UCXX_LOG_LEVEL_TRACE_POLL},
87  {"", UCXX_LOG_LEVEL_LAST},
88  {"PRINT", UCXX_LOG_LEVEL_PRINT}};
89 
95 const char logLevelNameDefault[] = "WARN";
96 
103 const ucs_log_level_t logLevelDefault = (ucs_log_level_t)logLevelNames.at(logLevelNameDefault);
104 
112 
113 } // namespace ucxx
Definition: address.h:15
const std::unordered_map< std::string, ucxx_log_level_t > logLevelNames
Map of log level names to their respective types.
Definition: log.h:74
const ucs_log_level_t logLevelDefault
The type of the default log level.
Definition: log.h:103
ucs_log_component_config_t ucxx_log_component_config
The UCXX log level component configuration.
void parseLogLevel()
Parse the active log level.
const char logLevelNameDefault[]
The name of the default log level.
Definition: log.h:95