24 #ifndef ARM_COMPUTE_LOGGING_MACROS_H
25 #define ARM_COMPUTE_LOGGING_MACROS_H
31 #ifdef ARM_COMPUTE_LOGGING_ENABLED
34 inline std::string signature_name(
const std::string &pretty_func)
36 const auto scope_op = pretty_func.find(
"::");
37 const auto begin = pretty_func.substr(0, scope_op).rfind(
" ") + 1;
38 const auto end = pretty_func.rfind(
"(") - begin;
40 return pretty_func.substr(begin,
end) +
"()";
42 #define ARM_COMPUTE_SIGNATURE_NAME signature_name(__PRETTY_FUNCTION__)
44 #define ARM_COMPUTE_SIGNATURE_NAME (__func__)
47 #define ARM_COMPUTE_LOG_MSG(logger_name, log_level, msg) \
50 auto __logger = arm_compute::logging::LoggerRegistry::get().logger(logger_name); \
51 if (__logger != nullptr) \
53 __logger->log(log_level, msg); \
57 #define ARM_COMPUTE_LOG_MSG_WITH_FUNCNAME(logger_name, log_level, msg) \
60 auto __logger = arm_compute::logging::LoggerRegistry::get().logger(logger_name); \
61 if (__logger != nullptr) \
63 std::ostringstream s; \
64 s << ARM_COMPUTE_SIGNATURE_NAME << " : " << msg; \
65 __logger->log(log_level, s.str()); \
69 #define ARM_COMPUTE_LOG_MSG_WITH_FORMAT(logger_name, log_level, fmt, ...) \
72 auto __logger = arm_compute::logging::LoggerRegistry::get().logger(logger_name); \
73 if (__logger != nullptr) \
75 size_t size = ::snprintf(nullptr, 0, fmt, __VA_ARGS__) + 1; \
76 auto char_str = std::make_unique<char[]>(size); \
77 ::snprintf(char_str.get(), size, fmt, __VA_ARGS__); \
78 __logger->log(log_level, std::string(char_str.get(), char_str.get() + size - 1)); \
82 #define ARM_COMPUTE_LOG_STREAM(logger_name, log_level, stream) \
85 auto __logger = arm_compute::logging::LoggerRegistry::get().logger(logger_name); \
86 if (__logger != nullptr) \
88 std::ostringstream s; \
90 __logger->log(log_level, s.str()); \
96 #define ARM_COMPUTE_LOG_MSG(logger_name, log_level, msg)
97 #define ARM_COMPUTE_LOG_MSG_WITH_FUNCNAME(logger_name, log_level, msg)
98 #define ARM_COMPUTE_LOG_MSG_WITH_FORMAT(logger_name, log_level, fmt, ...)
99 #define ARM_COMPUTE_LOG_STREAM(logger_name, log_level, stream)