7 #if !defined(MQTT_LOG_HPP)
12 #include <boost/log/core.hpp>
13 #include <boost/log/attributes.hpp>
14 #include <boost/log/attributes/scoped_attribute.hpp>
15 #include <boost/log/expressions.hpp>
16 #include <boost/log/expressions/keyword.hpp>
17 #include <boost/log/sources/global_logger_storage.hpp>
18 #include <boost/log/sources/severity_channel_logger.hpp>
19 #include <boost/log/trivial.hpp>
20 #include <boost/log/utility/manipulators/add_value.hpp>
21 #include <boost/log/utility/setup/common_attributes.hpp>
22 #include <boost/log/utility/setup/console.hpp>
23 #include <boost/preprocessor/if.hpp>
24 #include <boost/preprocessor/cat.hpp>
25 #include <boost/preprocessor/comparison/greater_equal.hpp>
31 namespace log = boost::log;
34 using std::string::string;
47 constexpr
char const*
const str[] {
55 o << str[static_cast<std::size_t>(sev)];
62 template <
typename... Params>
71 #if defined(MQTT_USE_LOG)
75 using global_logger_t = log::sources::severity_channel_logger<severity_level, channel>;
76 inline global_logger_t& logger() {
77 thread_local global_logger_t l;
82 BOOST_LOG_ATTRIBUTE_KEYWORD(file,
"MqttFile", std::string)
83 BOOST_LOG_ATTRIBUTE_KEYWORD(line,
"MqttLine",
unsigned int)
84 BOOST_LOG_ATTRIBUTE_KEYWORD(
function,
"MqttFunction", std::string)
85 BOOST_LOG_ATTRIBUTE_KEYWORD(address,
"MqttAddress",
void const*)
89 #define MQTT_LOG_FP(chan, sev) \
90 BOOST_LOG_STREAM_CHANNEL_SEV(MQTT_NS::logger(), MQTT_NS::channel(chan), sev) \
91 << boost::log::add_value(MQTT_NS::file, __FILE__) \
92 << boost::log::add_value(MQTT_NS::line, __LINE__) \
93 << boost::log::add_value(MQTT_NS::function, BOOST_CURRENT_FUNCTION)
95 #define MQTT_GET_LOG_SEV_NUM(lv) BOOST_PP_CAT(MQTT_, lv)
101 #if !defined(MQTT_LOG_SEV)
102 #define MQTT_LOG_SEV trace
108 #define MQTT_warning 3
116 #if !defined(MQTT_LOG)
118 #define MQTT_LOG(chan, sev) \
120 BOOST_PP_GREATER_EQUAL(MQTT_GET_LOG_SEV_NUM(sev), MQTT_GET_LOG_SEV_NUM(MQTT_LOG_SEV)), \
121 MQTT_LOG_FP(chan, MQTT_NS::severity_level::sev), \
122 MQTT_NS::detail::null_log(chan, MQTT_NS::severity_level::sev) \
127 #if !defined(MQTT_ADD_VALUE)
129 #define MQTT_ADD_VALUE(name, val) boost::log::add_value((MQTT_NS::name), (val))
135 #define MQTT_LOG(chan, sev) MQTT_NS::detail::null_log(chan, MQTT_NS::severity_level::sev)
136 #define MQTT_ADD_VALUE(name, val) val
constexpr null_log const & operator<<(null_log const &o, T const &)
Definition: log.hpp:67
std::ostream & operator<<(std::ostream &os, connect_return_code val)
Definition: connect_return_code.hpp:43
severity_level
Definition: log.hpp:37
constexpr null_log(Params &&...)
Definition: log.hpp:63