浏览该文件的文档.
2#if defined(LABEL) && defined(ROLE)
5 XCAL_INFO(ROLE, LABEL) << msg; \
10 XCAL_WARN(ROLE, LABEL) << msg; \
15 XCAL_ERROR(ROLE, LABEL) << msg; \
20 XCAL_DEBUG(ROLE, LABEL) << msg; \
25 XCAL_FATAL(ROLE, LABEL) << msg; \
29# define _I(role, msg) \
31 XCAL_INFO(role, LABEL) << msg; \
34# define _W(role, msg) \
36 XCAL_WARN(role, LABEL) << msg; \
39# define _E(role, msg) \
41 XCAL_ERROR(role, LABEL) << msg; \
44# define _D(role, msg) \
46 XCAL_DEBUG(role, LABEL) << msg; \
49# define _F(role, msg) \
51 XCAL_FATAL(role, LABEL) << msg; \
55# define _I(label, msg) \
57 XCAL_INFO(ROLE, label) << msg; \
60# define _W(label, msg) \
62 XCAL_WARN(ROLE, label) << msg; \
65# define _E(label, msg) \
67 XCAL_ERROR(ROLE, label) << msg; \
70# define _D(label, msg) \
72 XCAL_DEBUG(ROLE, label) << msg; \
75# define _F(label, msg) \
77 XCAL_FATAL(ROLE, label) << msg; \
81# define _I(role, label, msg) \
83 XCAL_INFO(role, label) << msg; \
86# define _W(role, label, msg) \
88 XCAL_WARN(role, label) << msg; \
91# define _E(role, label, msg) \
93 XCAL_ERROR(role, label) << msg; \
96# define _D(role, label, msg) \
98 XCAL_DEBUG(role, label) << msg; \
101# define _F(role, label, msg) \
103 XCAL_FATAL(role, label) << msg; \
108#ifdef XCAL_STATIC_LOG_LEVEL
109# if XCAL_DEBUG_LEVEL <= XCAL_STATIC_LOG_LEVEL
113# if XCAL_INFO_LEVEL <= XCAL_STATIC_LOG_LEVEL
117# if XCAL_WARN_LEVEL <= XCAL_STATIC_LOG_LEVEL
121# if XCAL_ERROR_LEVEL <= XCAL_STATIC_LOG_LEVEL
125# if XCAL_FATAL_LEVEL <= XCAL_STATIC_LOG_LEVEL
131#define _NAMED_VALUE(value) \
132 << "(" << #value << "=" << name << " " \
134#define _LINE_MSG(msg) << msg << "\n"
135#define _SELF << "(" << this << ")"
136#ifdef XCAL_LOG_OUT_TO_STDERR
137constexpr static auto PRO_LEN =
138 sizeof(
"D:\\31003\\Desktop\\code\\C++\\xc1\\xcal");
141 std::cerr << "[" << _STD string(__FILE__).substr(PRO_LEN) << ":" \
142 << __LINE__ << "] " << msg << std::endl; \