18#ifndef LOG4CXX_ASYNC_BUFFER_H
19#define LOG4CXX_ASYNC_BUFFER_H
58 append([value](LogCharMessageBuffer& msgBuf)
65#ifdef __cpp_init_captures
73 append([value = std::move(rvalue)](LogCharMessageBuffer& msgBuf)
99 LOG4CXX_DECLARE_PRIVATE_MEMBER_PTR(Private, m_priv)
100 using MessageBufferAppender = std::function<void(LogCharMessageBuffer&)>;
105 void append(
const MessageBufferAppender& f);
115#if !defined(LOG4CXX_THRESHOLD) || LOG4CXX_THRESHOLD <= 10000
135#define LOG4CXX_DEBUG_ASYNC(logger, message) do { \
136 if (LOG4CXX_UNLIKELY(::LOG4CXX_NS::Logger::isDebugEnabledFor(logger))) {\
137 ::LOG4CXX_NS::helpers::AsyncBuffer buf; \
138 logger->addDebugEvent(std::move(buf << message), LOG4CXX_LOCATION); }} while (0)
140#define LOG4CXX_DEBUG_ASYNC(logger, message)
143#if !defined(LOG4CXX_THRESHOLD) || LOG4CXX_THRESHOLD <= 5000
155#define LOG4CXX_TRACE_ASYNC(logger, message) do { \
156 if (LOG4CXX_UNLIKELY(::LOG4CXX_NS::Logger::isTraceEnabledFor(logger))) {\
157 ::LOG4CXX_NS::helpers::AsyncBuffer buf; \
158 logger->addTraceEvent(std::move(buf << message), LOG4CXX_LOCATION); }} while (0)
160#define LOG4CXX_TRACE_ASYNC(logger, message)
163#if !defined(LOG4CXX_THRESHOLD) || LOG4CXX_THRESHOLD <= 20000
180#define LOG4CXX_INFO_ASYNC(logger, message) do { \
181 if (::LOG4CXX_NS::Logger::isInfoEnabledFor(logger)) {\
182 ::LOG4CXX_NS::helpers::AsyncBuffer buf;\
183 logger->addInfoEvent(std::move(buf << message), LOG4CXX_LOCATION);\
189#define LOG4CXX_INFO_ASYNC(logger, message)
192#if !defined(LOG4CXX_THRESHOLD) || LOG4CXX_THRESHOLD <= 30000
207#define LOG4CXX_WARN_ASYNC(logger, message) do { \
208 if (::LOG4CXX_NS::Logger::isWarnEnabledFor(logger)) {\
209 ::LOG4CXX_NS::helpers::AsyncBuffer buf; \
210 logger->addWarnEvent(std::move(buf << message), LOG4CXX_LOCATION); }} while (0)
212#define LOG4CXX_WARN_ASYNC(logger, message)
215#if !defined(LOG4CXX_THRESHOLD) || LOG4CXX_THRESHOLD <= 40000
230#define LOG4CXX_ERROR_ASYNC(logger, message) do { \
231 if (::LOG4CXX_NS::Logger::isErrorEnabledFor(logger)) {\
232 ::LOG4CXX_NS::helpers::AsyncBuffer buf; \
233 logger->addErrorEvent(std::move(buf << message), LOG4CXX_LOCATION); }} while (0)
242#define LOG4CXX_ASSERT_ASYNC(logger, condition, message) do { \
243 if (!(condition) && ::LOG4CXX_NS::Logger::isErrorEnabledFor(logger)) {\
244 ::LOG4CXX_NS::helpers::AsyncBuffer buf; \
246 logger->addErrorEvent(std::move(buf << message), LOG4CXX_LOCATION); }} while (0)
249#define LOG4CXX_ERROR_ASYNC(logger, message)
250#define LOG4CXX_ASSERT_ASYNC(logger, condition, message)
253#if !defined(LOG4CXX_THRESHOLD) || LOG4CXX_THRESHOLD <= 50000
265#define LOG4CXX_FATAL_ASYNC(logger, message) do { \
266 if (::LOG4CXX_NS::Logger::isFatalEnabledFor(logger)) {\
267 ::LOG4CXX_NS::helpers::AsyncBuffer buf; \
268 logger->addFatalEvent(std::move(buf << message), LOG4CXX_LOCATION); }} while (0)
271#define LOG4CXX_FATAL_ASYNC(logger, message)
This class is used by the LOG4CXX_INFO_ASYNC and similar macros to support insertion operators.
Definition asyncbuffer.h:37
bool empty() const
Has no item been added to this?
~AsyncBuffer()
Release resources.
AsyncBuffer(AsyncBuffer &&other)
A new buffer with the content of other.
void renderMessage(LogCharMessageBuffer &msg)
Add text version of buffered values to msg.
AsyncBuffer()
An empty buffer.
AsyncBuffer & operator<<(const T &value)
Append a function to this buffer that will convert value to text.
Definition asyncbuffer.h:56
void clear()
Remove all message appenders.
log4cxx::helpers::UniCharMessageBuffer & operator<<(log4cxx::helpers::UniCharMessageBuffer &mb, const QString &msg)
Definition log4cxx-qt/messagebuffer.h:24