Loading...
Searching...
No Matches
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
14namespace ucxx {
15
21extern 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) <= \
32 (ucxx::ucxx_log_level_t)(reinterpret_cast<ucs_log_component_config_t*>(_comp_log_config) \
33 ->log_level)))
34
35#define ucxx_log_is_enabled(_level) \
36 ucxx_log_component_is_enabled(_level, &ucxx::ucxx_log_component_config)
37
38#define ucxx_log_component(_level, _comp_log_config, _fmt, ...) \
39 do { \
40 if (ucxx_log_component_is_enabled(_level, _comp_log_config)) { \
41 ucs_log_dispatch(__FILE__, \
42 __LINE__, \
43 __func__, \
44 (ucs_log_level_t)(_level), \
45 _comp_log_config, \
46 _fmt, \
47 ##__VA_ARGS__); \
48 } \
49 } while (0)
50
51#define ucxx_log(_level, _fmt, ...) \
52 do { \
53 ucxx_log_component(_level, &ucxx::ucxx_log_component_config, _fmt, ##__VA_ARGS__); \
54 } while (0)
55
56#define ucxx_error(_fmt, ...) ucxx_log(ucxx::UCXX_LOG_LEVEL_ERROR, _fmt, ##__VA_ARGS__)
57#define ucxx_warn(_fmt, ...) ucxx_log(ucxx::UCXX_LOG_LEVEL_WARN, _fmt, ##__VA_ARGS__)
58#define ucxx_diag(_fmt, ...) ucxx_log(ucxx::UCXX_LOG_LEVEL_DIAG, _fmt, ##__VA_ARGS__)
59#define ucxx_info(_fmt, ...) ucxx_log(ucxx::UCXX_LOG_LEVEL_INFO, _fmt, ##__VA_ARGS__)
60#define ucxx_debug(_fmt, ...) ucxx_log(ucxx::UCXX_LOG_LEVEL_DEBUG, _fmt, ##__VA_ARGS__)
61#define ucxx_trace(_fmt, ...) ucxx_log(ucxx::UCXX_LOG_LEVEL_TRACE, _fmt, ##__VA_ARGS__)
62#define ucxx_trace_req(_fmt, ...) ucxx_log(ucxx::UCXX_LOG_LEVEL_TRACE_REQ, _fmt, ##__VA_ARGS__)
63#define ucxx_trace_data(_fmt, ...) ucxx_log(ucxx::UCXX_LOG_LEVEL_TRACE_DATA, _fmt, ##__VA_ARGS__)
64#define ucxx_trace_async(_fmt, ...) ucxx_log(ucxx::UCXX_LOG_LEVEL_TRACE_ASYNC, _fmt, ##__VA_ARGS__)
65#define ucxx_trace_func(_fmt, ...) \
66 ucxx_log(ucxx::UCXX_LOG_LEVEL_TRACE_FUNC, "%s(" _fmt ")", __FUNCTION__, ##__VA_ARGS__)
67#define ucxx_trace_poll(_fmt, ...) ucxx_log(ucxx::UCXX_LOG_LEVEL_TRACE_POLL, _fmt, ##__VA_ARGS__)
68
75const std::unordered_map<std::string, ucxx_log_level_t> logLevelNames = {
76 {"FATAL", UCXX_LOG_LEVEL_FATAL},
77 {"ERROR", UCXX_LOG_LEVEL_ERROR},
78 {"WARN", UCXX_LOG_LEVEL_WARN},
79 {"DIAG", UCXX_LOG_LEVEL_DIAG},
80 {"INFO", UCXX_LOG_LEVEL_INFO},
81 {"DEBUG", UCXX_LOG_LEVEL_DEBUG},
82 {"TRACE", UCXX_LOG_LEVEL_TRACE},
83 {"REQ", UCXX_LOG_LEVEL_TRACE_REQ},
84 {"DATA", UCXX_LOG_LEVEL_TRACE_DATA},
85 {"ASYNC", UCXX_LOG_LEVEL_TRACE_ASYNC},
86 {"FUNC", UCXX_LOG_LEVEL_TRACE_FUNC},
87 {"POLL", UCXX_LOG_LEVEL_TRACE_POLL},
88 {"", UCXX_LOG_LEVEL_LAST},
89 {"PRINT", UCXX_LOG_LEVEL_PRINT}};
90
96const char logLevelNameDefault[] = "WARN";
97
104const ucs_log_level_t logLevelDefault = (ucs_log_level_t)logLevelNames.at(logLevelNameDefault);
105
113
114} // namespace ucxx
Definition address.h:16
const std::unordered_map< std::string, ucxx_log_level_t > logLevelNames
Map of log level names to their respective types.
Definition log.h:75
const ucs_log_level_t logLevelDefault
The type of the default log level.
Definition log.h:104
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:96