5#include "attribute_map.hpp"
19 class Log :
public AttributeMap
48 Log &operator=(
const Log &) =
delete;
56 Log &operator=(Log &&other)
noexcept
60 AttributeMap::operator=(
std::move(other));
73 CExports::CVTSendLog(handle_, message_.c_str());
82 explicit operator bool() const noexcept
84 return handle_ !=
nullptr;
101 template <
typename T,
typename =
void>
106 template <
typename T>
107 struct is_ostreamable<T, void_t<decltype(std::declval<std::ostream &>() << std::declval<T>())>> : std::true_type
112 template <typename T, typename = typename std::enable_if<is_ostreamable<T>::value>::type>
117 message_ += oss.str();
123 (*this)(kv.first, kv.second);
130 , logLevel_(logLevel)
132 auto &
module = Module::Get();
133 if (!module.WouldLog())
135 CExports::CVTLOG handle =
nullptr;
136 CExports::CVTCreateLog(module.Handle(),
static_cast<CExports::CVTLogLevel
>(logLevel), handle);
140 Log() noexcept = default;
143 std::
string message_;
A attribute map for telemetry data.
Definition attribute_map.hpp:32
A log object to stream messages.
Definition log.hpp:20
Log & operator<<(const T &value)
Operator for types compatible with std::ostream.
Definition log.hpp:113
static Log Create(LogLevel logLevel)
Creates a log with the given log level.
Definition log.hpp:42
static Log Create()
Creates a dummy log.
Definition log.hpp:30
Namespace for telemetry.
Definition attribute_map.hpp:16
LogLevel
Log level for telemetry.
Definition telemetry.hpp:31
@ DEBUG
Logs for debugging, these should be avoided especially in a critical code paths.
Definition telemetry.hpp:33
Root namespace for the Image Manager interface.
Definition version.hpp:11