7#ifndef BACKENDS_P4TOOLS_COMMON_LIB_LOGGING_H_
8#define BACKENDS_P4TOOLS_COMMON_LIB_LOGGING_H_
15#include <boost/format.hpp>
22inline std::string
logHelper(boost::format &f) {
return f.str(); }
25template <
class T,
class... Args>
26std::string
logHelper(boost::format &f, T &&t, Args &&...args) {
27 return logHelper(f % std::forward<T>(t), std::forward<Args>(args)...);
33template <
typename... Arguments>
34void printFeature(
const std::string &label,
int level,
const std::string &fmt,
35 Arguments &&...args) {
37 if (!Log::fileLogLevelIsAtLeast(label.c_str(), level)) {
42 LOG_FEATURE(label.c_str(), level,
logHelper(f, std::forward<Arguments>(args)...));
47template <
typename... Arguments>
48void printInfo(
const std::string &fmt, Arguments &&...args) {
49 printFeature(
"tools_info", 4, fmt, std::forward<Arguments>(args)...);
55template <
typename... Arguments>
56void printDebug(
const std::string &fmt, Arguments &&...args) {
57 printFeature(
"tools_debug", 4, fmt, std::forward<Arguments>(args)...);