diff --git a/include/maxscale/log.hh b/include/maxscale/log.hh index e4215c738..32b417e5c 100644 --- a/include/maxscale/log.hh +++ b/include/maxscale/log.hh @@ -19,6 +19,7 @@ #include #include #include +#include #if !defined (MXS_MODULE_NAME) #define MXS_MODULE_NAME NULL @@ -98,4 +99,25 @@ json_t* mxs_logs_to_json(const char* host); #define mxs_strerror mxb_strerror +#define MXS_STREAM_LOG_HELPER(CMXSLOGLEVEL__, mxs_msg_str__) \ + do { \ + if (!mxb_log_is_priority_enabled(CMXSLOGLEVEL__)) \ + { \ + break; \ + } \ + thread_local std::ostringstream os; \ + os.clear(); \ + os.seekp(0); \ + os << mxs_msg_str__; \ + mxb_log_message(CMXSLOGLEVEL__, MXB_MODULE_NAME, __FILE__, __LINE__, \ + __func__, "%s", os.str().c_str()); \ + } while (false) + +#define MXS_SALERT(mxs_msg_str__) MXS_STREAM_LOG_HELPER(LOG_ALERT, mxs_msg_str__) +#define MXS_SERROR(mxs_msg_str__) MXS_STREAM_LOG_HELPER(LOG_ERR, mxs_msg_str__) +#define MXS_SWARNING(mxs_msg_str__) MXS_STREAM_LOG_HELPER(LOG_WARNING, mxs_msg_str__) +#define MXS_SNOTICE(mxs_msg_str__) MXS_STREAM_LOG_HELPER(LOG_NOTICE, mxs_msg_str__) +#define MXS_SINFO(mxs_msg_str__) MXS_STREAM_LOG_HELPER(LOG_INFO, mxs_msg_str__) +#define MXS_SDEBUG(mxs_msg_str__) MXS_STREAM_LOG_HELPER(LOG_DEBUG, mxs_msg_str__) + MXS_END_DECLS