24 #ifndef SRC_COMMON_LOG_H
25 #define SRC_COMMON_LOG_H
27 #ifndef ARM_COMPUTE_LOGGING_ENABLED
29 #define ARM_COMPUTE_CREATE_ACL_LOGGER()
30 #define ARM_COMPUTE_LOG_MSG_ACL(log_level, msg)
31 #define ARM_COMPUTE_LOG_MSG_WITH_FORMAT_ACL(log_level, fmt, ...)
32 #define ARM_COMPUTE_LOG_ERROR_ACL(msg)
33 #define ARM_COMPUTE_LOG_ERROR_WITH_FUNCNAME_ACL(msg)
34 #define ARM_COMPUTE_LOG_INFO_WITH_FUNCNAME_ACL(msg)
35 #define ARM_COMPUTE_LOG_PARAMS(...)
48 #define ARM_COMPUTE_CREATE_ACL_LOGGER() \
51 if (arm_compute::logging::LoggerRegistry::get().logger("ComputeLibrary") == nullptr) \
53 arm_compute::logging::LoggerRegistry::get().create_logger("ComputeLibrary", \
54 arm_compute::logging::LogLevel::INFO); \
63 #define ARM_COMPUTE_LOG_MSG_ACL(log_level, msg) \
66 ARM_COMPUTE_CREATE_ACL_LOGGER(); \
67 ARM_COMPUTE_LOG_MSG("ComputeLibrary", log_level, msg); \
76 #define ARM_COMPUTE_LOG_MSG_WITH_FORMAT_ACL(log_level, fmt, ...) \
79 ARM_COMPUTE_CREATE_ACL_LOGGER(); \
80 ARM_COMPUTE_LOG_MSG_WITH_FORMAT("ComputeLibrary", log_level, fmt, __VA_ARGS__); \
87 #define ARM_COMPUTE_LOG_ERROR_ACL(msg) \
90 ARM_COMPUTE_CREATE_ACL_LOGGER(); \
91 ARM_COMPUTE_LOG_MSG("ComputeLibrary", arm_compute::logging::LogLevel::ERROR, msg); \
98 #define ARM_COMPUTE_LOG_ERROR_WITH_FUNCNAME_ACL(msg) \
101 ARM_COMPUTE_CREATE_ACL_LOGGER(); \
102 ARM_COMPUTE_LOG_MSG_WITH_FUNCNAME("ComputeLibrary", arm_compute::logging::LogLevel::ERROR, msg); \
109 #define ARM_COMPUTE_LOG_INFO_WITH_FUNCNAME_ACL(msg) \
112 ARM_COMPUTE_CREATE_ACL_LOGGER(); \
113 ARM_COMPUTE_LOG_MSG_WITH_FUNCNAME("ComputeLibrary", arm_compute::logging::LogLevel::INFO, msg); \
121 template <std::size_t Index,
typename... Tp>
122 inline typename std::enable_if<Index ==
sizeof...(Tp),
void>::
type
123 logParamsImpl(std::vector<std::string> &data_registry,
const std::tuple<Tp...> &in_params_tuple)
135 template <std::size_t Index,
typename... Tp>
136 inline typename std::enable_if <
137 Index<
sizeof...(Tp),
void>::
type logParamsImpl(std::vector<std::string> &data_registry,
138 const std::tuple<Tp...> &in_params_tuple)
142 logParamsImpl<Index + 1, Tp...>(data_registry, in_params_tuple);
154 template <
typename... Ts>
155 const std::vector<std::string> logParams(Ts &&...ins)
157 std::vector<std::string> data_registry{};
158 std::tuple<Ts...> in_params_tuple{ins...};
161 logParamsImpl<0>(data_registry, in_params_tuple);
162 return data_registry;
174 inline const std::vector<std::string> getParamsNames(
const std::string &in_params_str)
176 std::stringstream
ss(in_params_str);
179 std::vector<std::string> names;
184 while (std::getline(
ss, temp,
','))
186 names.push_back(temp);
188 for (
auto &
name : names)
206 inline const std::string constructDataLog(
const std::vector<std::string> ¶ms_names,
207 const std::vector<std::string> &data_registry)
209 std::string dataLog =
"\n ";
211 for (uint8_t i = 0; i < params_names.size(); ++i)
213 dataLog += params_names[i] +
": " + data_registry.at(i) +
"\n ";
226 #define ARM_COMPUTE_LOG_PARAMS(...) \
229 ARM_COMPUTE_LOG_INFO_WITH_FUNCNAME_ACL( \
230 constructDataLog(getParamsNames(#__VA_ARGS__), logParams(__VA_ARGS__))); \