Quick Links:

bal | bbl | bdl | bsl

Classes | Namespaces | Defines | Functions

ball_log.h File Reference

Provide macros and utility functions to facilitate logging. More...

Go to the source code of this file.

Classes

struct  ball::Log
class  ball::Log_Stream
class  ball::Log_Formatter

Namespaces

namespace  ball

Defines

#define BALL_LOG_CATEGORY   (ball_log_getCategoryHolder(BALL_LOG_CATEGORYHOLDER)->category())
#define BALL_LOG_THRESHOLD   (ball_log_getCategoryHolder(BALL_LOG_CATEGORYHOLDER)->threshold())
#define BALL_LOG_RECORD   (ball_log_lOg_StReAm.record())
#define BALL_LOG_OUTPUT_STREAM   (ball_log_lOg_StReAm.stream())
#define BALL_LOG_SET_CATEGORY(CATEGORY)
#define BALL_LOG_SET_CATEGORY_HIERARCHICALLY(CATEGORY)
#define BALL_LOG_SET_DYNAMIC_CATEGORY(CATEGORY)
#define BALL_LOG_SET_DYNAMIC_CATEGORY_HIERARCHICALLY(CATEGORY)
#define BALL_LOG_SET_CLASS_CATEGORY(CATEGORY)
#define BALL_LOG_SET_CLASS_CATEGORY_HIERARCHICALLY(CATEGORY)
#define BALL_LOG_SET_NAMESPACE_CATEGORY(CATEGORY)
#define BALL_LOG_SET_NAMESPACE_CATEGORY_HIERARCHICALLY(CATEGORY)
#define BALL_LOG_STREAM_CONST_IMP(SEVERITY)
#define BALL_LOG_STREAM_IMP(SEVERITY)
#define BALL_LOG_STREAM(SEVERITY)   BALL_LOG_STREAM_IMP((SEVERITY)) BALL_LOG_OUTPUT_STREAM
#define BALL_LOG_TRACE
#define BALL_LOG_DEBUG
#define BALL_LOG_INFO
#define BALL_LOG_WARN
#define BALL_LOG_ERROR
#define BALL_LOG_FATAL
#define BALL_LOG_STREAM_BLOCK(SEVERITY)   BALL_LOG_STREAM_IMP((SEVERITY))
#define BALL_LOG_TRACE_BLOCK   BALL_LOG_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_TRACE)
#define BALL_LOG_DEBUG_BLOCK   BALL_LOG_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_DEBUG)
#define BALL_LOG_INFO_BLOCK   BALL_LOG_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_INFO)
#define BALL_LOG_WARN_BLOCK   BALL_LOG_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_WARN)
#define BALL_LOG_ERROR_BLOCK   BALL_LOG_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_ERROR)
#define BALL_LOG_FATAL_BLOCK   BALL_LOG_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_FATAL)
#define BALL_LOG_END   ""
#define BALL_LOGCB_STREAM_CONST_IMP(SEVERITY, CALLBACK)
#define BALL_LOGCB_STREAM_IMP(SEVERITY, CALLBACK)
#define BALL_LOGCB_STREAM(BALL_SEVERITY, CALLBACK)   BALL_LOGCB_STREAM_IMP((BALL_SEVERITY), (CALLBACK)) BALL_LOG_OUTPUT_STREAM
#define BALL_LOGCB_TRACE(CALLBACK)
#define BALL_LOGCB_DEBUG(CALLBACK)
#define BALL_LOGCB_INFO(CALLBACK)
#define BALL_LOGCB_WARN(CALLBACK)
#define BALL_LOGCB_ERROR(CALLBACK)
#define BALL_LOGCB_FATAL(CALLBACK)
#define BALL_LOGCB_STREAM_BLOCK(BALL_SEVERITY, CALLBACK)   BALL_LOGCB_STREAM_IMP((BALL_SEVERITY), (CALLBACK))
#define BALL_LOGCB_TRACE_BLOCK(CALLBACK)
#define BALL_LOGCB_DEBUG_BLOCK(CALLBACK)
#define BALL_LOGCB_INFO_BLOCK(CALLBACK)
#define BALL_LOGCB_WARN_BLOCK(CALLBACK)
#define BALL_LOGCB_ERROR_BLOCK(CALLBACK)
#define BALL_LOGCB_FATAL_BLOCK(CALLBACK)
#define BALL_LOGCB_END   ""
#define BALL_LOGVA_CONST_IMP(SEVERITY,...)
#define BALL_LOGVA(SEVERITY,...)
#define BALL_LOGVA_TRACE(...)   BALL_LOGVA_CONST_IMP(BloombergLP::ball::Severity::e_TRACE, __VA_ARGS__)
#define BALL_LOGVA_DEBUG(...)   BALL_LOGVA_CONST_IMP(BloombergLP::ball::Severity::e_DEBUG, __VA_ARGS__)
#define BALL_LOGVA_INFO(...)   BALL_LOGVA_CONST_IMP(BloombergLP::ball::Severity::e_INFO, __VA_ARGS__)
#define BALL_LOGVA_WARN(...)   BALL_LOGVA_CONST_IMP(BloombergLP::ball::Severity::e_WARN, __VA_ARGS__)
#define BALL_LOGVA_ERROR(...)   BALL_LOGVA_CONST_IMP(BloombergLP::ball::Severity::e_ERROR, __VA_ARGS__)
#define BALL_LOGVA_FATAL(...)   BALL_LOGVA_CONST_IMP(BloombergLP::ball::Severity::e_FATAL, __VA_ARGS__)
#define BALL_LOG_IS_ENABLED(SEVERITY)

Functions

const
BloombergLP::ball::CategoryHolder * 
ball::ball_log_getCategoryHolder (const BloombergLP::ball::CategoryHolder &categoryHolder)

Detailed Description


Define Documentation

#define BALL_LOG_CATEGORY   (ball_log_getCategoryHolder(BALL_LOG_CATEGORYHOLDER)->category())
#define BALL_LOG_THRESHOLD   (ball_log_getCategoryHolder(BALL_LOG_CATEGORYHOLDER)->threshold())
#define BALL_LOG_RECORD   (ball_log_lOg_StReAm.record())
#define BALL_LOG_OUTPUT_STREAM   (ball_log_lOg_StReAm.stream())
#define BALL_LOG_SET_CATEGORY (   CATEGORY  ) 
Value:
static BloombergLP::ball::CategoryHolder BALL_LOG_CATEGORYHOLDER = {      \
        { BloombergLP::ball::CategoryHolder::e_UNINITIALIZED_CATEGORY },      \
                                                             { 0 }, { 0 }     \
    };                                                                        \
    if (BSLS_PERFORMANCEHINT_PREDICT_UNLIKELY(!BALL_LOG_CATEGORY)) {          \
        BSLS_PERFORMANCEHINT_UNLIKELY_HINT;                                   \
        BloombergLP::ball::Log::setCategory(&BALL_LOG_CATEGORYHOLDER,         \
                                            CATEGORY);                        \
    }
#define BALL_LOG_SET_CATEGORY_HIERARCHICALLY (   CATEGORY  ) 
Value:
static BloombergLP::ball::CategoryHolder BALL_LOG_CATEGORYHOLDER = {      \
        { BloombergLP::ball::CategoryHolder::e_UNINITIALIZED_CATEGORY },      \
                                                             { 0 }, { 0 }     \
    };                                                                        \
    if (BSLS_PERFORMANCEHINT_PREDICT_UNLIKELY(!BALL_LOG_CATEGORY)) {          \
        BSLS_PERFORMANCEHINT_UNLIKELY_HINT;                                   \
        BloombergLP::ball::Log::setCategoryHierarchically(                    \
                                            &BALL_LOG_CATEGORYHOLDER,         \
                                            CATEGORY);                        \
    }
#define BALL_LOG_SET_DYNAMIC_CATEGORY (   CATEGORY  ) 
Value:
const BloombergLP::ball::Category *BALL_LOG_DYNAMIC_CATEGORY =            \
                               BloombergLP::ball::Log::setCategory(CATEGORY); \
    BloombergLP::ball::CategoryHolder BALL_LOG_CATEGORYHOLDER = {             \
        { BloombergLP::ball::CategoryHolder::e_DYNAMIC_CATEGORY },            \
        { const_cast<BloombergLP::ball::Category *>(                          \
                                                BALL_LOG_DYNAMIC_CATEGORY) }, \
        { 0 }                                                                 \
    };
#define BALL_LOG_SET_DYNAMIC_CATEGORY_HIERARCHICALLY (   CATEGORY  ) 
Value:
const BloombergLP::ball::Category *BALL_LOG_DYNAMIC_CATEGORY =            \
                 BloombergLP::ball::Log::setCategoryHierarchically(CATEGORY); \
    BloombergLP::ball::CategoryHolder BALL_LOG_CATEGORYHOLDER = {             \
        { BloombergLP::ball::CategoryHolder::e_DYNAMIC_CATEGORY },            \
        { const_cast<BloombergLP::ball::Category *>(                          \
                                                BALL_LOG_DYNAMIC_CATEGORY) }, \
        { 0 }                                                                 \
    };
#define BALL_LOG_SET_CLASS_CATEGORY (   CATEGORY  ) 
Value:
static                                                                    \
    const BloombergLP::ball::CategoryHolder *ball_log_getCategoryHolder(      \
                     const BloombergLP::ball::CategoryHolder& categoryHolder) \
    {                                                                         \
        return &categoryHolder;                                               \
    }                                                                         \
    static                                                                    \
    const BloombergLP::ball::CategoryHolder *ball_log_getCategoryHolder(int)  \
    {                                                                         \
        static BloombergLP::ball::CategoryHolder holder = {                   \
            { BloombergLP::ball::CategoryHolder::e_UNINITIALIZED_CATEGORY },  \
                                                                 { 0 }, { 0 } \
        };                                                                    \
        if (BSLS_PERFORMANCEHINT_PREDICT_UNLIKELY(!holder.category())) {      \
            BSLS_PERFORMANCEHINT_UNLIKELY_HINT;                               \
            BloombergLP::ball::Log::setCategory(&holder, CATEGORY);           \
        }                                                                     \
        return &holder;                                                       \
    }                                                                         \
    enum { BALL_LOG_CATEGORYHOLDER = 0 }
#define BALL_LOG_SET_CLASS_CATEGORY_HIERARCHICALLY (   CATEGORY  ) 
Value:
static                                                                    \
    const BloombergLP::ball::CategoryHolder *ball_log_getCategoryHolder(      \
                     const BloombergLP::ball::CategoryHolder& categoryHolder) \
    {                                                                         \
        return &categoryHolder;                                               \
    }                                                                         \
    static                                                                    \
    const BloombergLP::ball::CategoryHolder *ball_log_getCategoryHolder(int)  \
    {                                                                         \
        static BloombergLP::ball::CategoryHolder holder = {                   \
            { BloombergLP::ball::CategoryHolder::e_UNINITIALIZED_CATEGORY },  \
                                                                 { 0 }, { 0 } \
        };                                                                    \
        if (BSLS_PERFORMANCEHINT_PREDICT_UNLIKELY(!holder.category())) {      \
            BSLS_PERFORMANCEHINT_UNLIKELY_HINT;                               \
            BloombergLP::ball::Log::setCategoryHierarchically(&holder,        \
                                                              CATEGORY);      \
        }                                                                     \
        return &holder;                                                       \
    }                                                                         \
    enum { BALL_LOG_CATEGORYHOLDER = 0 }
#define BALL_LOG_SET_NAMESPACE_CATEGORY (   CATEGORY  ) 
Value:
namespace {                                                                   \
    static                                                                    \
    const BloombergLP::ball::CategoryHolder *ball_log_getCategoryHolder(int)  \
    {                                                                         \
        static BloombergLP::ball::CategoryHolder holder = {                   \
            { BloombergLP::ball::CategoryHolder::e_UNINITIALIZED_CATEGORY },  \
                                                                 { 0 }, { 0 } \
        };                                                                    \
        if (BSLS_PERFORMANCEHINT_PREDICT_UNLIKELY(!holder.category())) {      \
            BSLS_PERFORMANCEHINT_UNLIKELY_HINT;                               \
            BloombergLP::ball::Log::setCategory(&holder, CATEGORY);           \
        }                                                                     \
        return &holder;                                                       \
    }                                                                         \
    enum { BALL_LOG_CATEGORYHOLDER = 0 };                                     \
}
#define BALL_LOG_SET_NAMESPACE_CATEGORY_HIERARCHICALLY (   CATEGORY  ) 
Value:
namespace {                                                                   \
    static                                                                    \
    const BloombergLP::ball::CategoryHolder *ball_log_getCategoryHolder(int)  \
    {                                                                         \
        static BloombergLP::ball::CategoryHolder holder = {                   \
            { BloombergLP::ball::CategoryHolder::e_UNINITIALIZED_CATEGORY },  \
                                                                 { 0 }, { 0 } \
        };                                                                    \
        if (BSLS_PERFORMANCEHINT_PREDICT_UNLIKELY(!holder.category())) {      \
            BSLS_PERFORMANCEHINT_UNLIKELY_HINT;                               \
            BloombergLP::ball::Log::setCategoryHierarchically(&holder,        \
                                                              CATEGORY);      \
        }                                                                     \
        return &holder;                                                       \
    }                                                                         \
    enum { BALL_LOG_CATEGORYHOLDER = 0 };                                     \
}
#define BALL_LOG_STREAM_CONST_IMP (   SEVERITY  ) 
Value:
for (const BloombergLP::ball::CategoryHolder *ball_log_cAtEgOrYhOlDeR =       \
               BloombergLP::ball::Log::categoryHolderIfEnabled<(SEVERITY)>(   \
                        ball_log_getCategoryHolder(BALL_LOG_CATEGORYHOLDER)); \
     ball_log_cAtEgOrYhOlDeR;                                                 \
     )                                                                        \
for (BloombergLP::ball::Log_Stream ball_log_lOg_StReAm(                       \
                                         ball_log_cAtEgOrYhOlDeR->category(), \
                                         __FILE__,                            \
                                         __LINE__,                            \
                                         (SEVERITY));                         \
     ball_log_cAtEgOrYhOlDeR;                                                 \
     ball_log_cAtEgOrYhOlDeR = 0)
#define BALL_LOG_STREAM_IMP (   SEVERITY  ) 
Value:
for (const BloombergLP::ball::CategoryHolder *ball_log_cAtEgOrYhOlDeR =       \
                         ball_log_getCategoryHolder(BALL_LOG_CATEGORYHOLDER); \
     ball_log_cAtEgOrYhOlDeR                                                  \
     && ball_log_cAtEgOrYhOlDeR->threshold() >= (SEVERITY)                    \
     && BloombergLP::ball::Log::isCategoryEnabled(ball_log_cAtEgOrYhOlDeR,    \
                                                  (SEVERITY));                \
     )                                                                        \
for (BloombergLP::ball::Log_Stream ball_log_lOg_StReAm(                       \
                                         ball_log_cAtEgOrYhOlDeR->category(), \
                                         __FILE__,                            \
                                         __LINE__,                            \
                                         (SEVERITY));                         \
     ball_log_cAtEgOrYhOlDeR;                                                 \
     ball_log_cAtEgOrYhOlDeR = 0)
#define BALL_LOG_STREAM (   SEVERITY  )     BALL_LOG_STREAM_IMP((SEVERITY)) BALL_LOG_OUTPUT_STREAM
#define BALL_LOG_TRACE
Value:
BALL_LOG_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_TRACE)           \
    BALL_LOG_OUTPUT_STREAM
#define BALL_LOG_DEBUG
Value:
BALL_LOG_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_DEBUG)           \
    BALL_LOG_OUTPUT_STREAM
#define BALL_LOG_INFO
Value:
BALL_LOG_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_INFO)            \
    BALL_LOG_OUTPUT_STREAM
#define BALL_LOG_WARN
Value:
BALL_LOG_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_WARN)            \
    BALL_LOG_OUTPUT_STREAM
#define BALL_LOG_ERROR
Value:
BALL_LOG_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_ERROR)           \
    BALL_LOG_OUTPUT_STREAM
#define BALL_LOG_FATAL
Value:
BALL_LOG_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_FATAL)           \
    BALL_LOG_OUTPUT_STREAM
#define BALL_LOG_STREAM_BLOCK (   SEVERITY  )     BALL_LOG_STREAM_IMP((SEVERITY))
#define BALL_LOG_TRACE_BLOCK   BALL_LOG_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_TRACE)
#define BALL_LOG_DEBUG_BLOCK   BALL_LOG_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_DEBUG)
#define BALL_LOG_INFO_BLOCK   BALL_LOG_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_INFO)
#define BALL_LOG_WARN_BLOCK   BALL_LOG_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_WARN)
#define BALL_LOG_ERROR_BLOCK   BALL_LOG_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_ERROR)
#define BALL_LOG_FATAL_BLOCK   BALL_LOG_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_FATAL)
#define BALL_LOG_END   ""
#define BALL_LOGCB_STREAM_CONST_IMP (   SEVERITY,
  CALLBACK 
)
Value:
for (const BloombergLP::ball::CategoryHolder *ball_log_cAtEgOrYhOlDeR =       \
               BloombergLP::ball::Log::categoryHolderIfEnabled<(SEVERITY)>(   \
                        ball_log_getCategoryHolder(BALL_LOG_CATEGORYHOLDER)); \
     ball_log_cAtEgOrYhOlDeR;                                                 \
     )                                                                        \
for (BloombergLP::ball::Log_Stream ball_log_lOg_StReAm(                       \
                                         ball_log_cAtEgOrYhOlDeR->category(), \
                                         __FILE__,                            \
                                         __LINE__,                            \
                                         (SEVERITY));                         \
     ball_log_cAtEgOrYhOlDeR                                                  \
     && (CALLBACK(&BALL_LOG_RECORD->customFields()), true);                   \
     ball_log_cAtEgOrYhOlDeR = 0)
#define BALL_LOGCB_STREAM_IMP (   SEVERITY,
  CALLBACK 
)
Value:
for (const BloombergLP::ball::CategoryHolder *ball_log_cAtEgOrYhOlDeR =       \
                         ball_log_getCategoryHolder(BALL_LOG_CATEGORYHOLDER); \
     ball_log_cAtEgOrYhOlDeR                                                  \
     && ball_log_cAtEgOrYhOlDeR->threshold() >= (SEVERITY)                    \
     && BloombergLP::ball::Log::isCategoryEnabled(ball_log_cAtEgOrYhOlDeR,    \
                                                  (SEVERITY));                \
     )                                                                        \
for (BloombergLP::ball::Log_Stream ball_log_lOg_StReAm(                       \
                                         ball_log_cAtEgOrYhOlDeR->category(), \
                                         __FILE__,                            \
                                         __LINE__,                            \
                                         (SEVERITY));                         \
     ball_log_cAtEgOrYhOlDeR                                                  \
     && (CALLBACK(&BALL_LOG_RECORD->customFields()), true);                   \
     ball_log_cAtEgOrYhOlDeR = 0)
#define BALL_LOGCB_STREAM (   BALL_SEVERITY,
  CALLBACK 
)    BALL_LOGCB_STREAM_IMP((BALL_SEVERITY), (CALLBACK)) BALL_LOG_OUTPUT_STREAM
#define BALL_LOGCB_TRACE (   CALLBACK  ) 
Value:
BALL_LOGCB_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_TRACE,         \
                                (CALLBACK))                                   \
    BALL_LOG_OUTPUT_STREAM
#define BALL_LOGCB_DEBUG (   CALLBACK  ) 
Value:
BALL_LOGCB_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_DEBUG,         \
                                (CALLBACK))                                   \
    BALL_LOG_OUTPUT_STREAM
#define BALL_LOGCB_INFO (   CALLBACK  ) 
Value:
BALL_LOGCB_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_INFO,          \
                                (CALLBACK))                                   \
    BALL_LOG_OUTPUT_STREAM
#define BALL_LOGCB_WARN (   CALLBACK  ) 
Value:
BALL_LOGCB_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_WARN,          \
                                (CALLBACK))                                   \
    BALL_LOG_OUTPUT_STREAM
#define BALL_LOGCB_ERROR (   CALLBACK  ) 
Value:
BALL_LOGCB_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_ERROR,         \
                                (CALLBACK))                                   \
    BALL_LOG_OUTPUT_STREAM
#define BALL_LOGCB_FATAL (   CALLBACK  ) 
Value:
BALL_LOGCB_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_FATAL,         \
                                (CALLBACK))                                   \
    BALL_LOG_OUTPUT_STREAM
#define BALL_LOGCB_STREAM_BLOCK (   BALL_SEVERITY,
  CALLBACK 
)    BALL_LOGCB_STREAM_IMP((BALL_SEVERITY), (CALLBACK))
#define BALL_LOGCB_TRACE_BLOCK (   CALLBACK  ) 
Value:
BALL_LOGCB_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_TRACE,         \
                                (CALLBACK))
#define BALL_LOGCB_DEBUG_BLOCK (   CALLBACK  ) 
Value:
BALL_LOGCB_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_DEBUG,         \
                                (CALLBACK))
#define BALL_LOGCB_INFO_BLOCK (   CALLBACK  ) 
Value:
BALL_LOGCB_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_INFO,          \
                                (CALLBACK))
#define BALL_LOGCB_WARN_BLOCK (   CALLBACK  ) 
Value:
BALL_LOGCB_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_WARN,          \
                                (CALLBACK))
#define BALL_LOGCB_ERROR_BLOCK (   CALLBACK  ) 
Value:
BALL_LOGCB_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_ERROR,         \
                                (CALLBACK))
#define BALL_LOGCB_FATAL_BLOCK (   CALLBACK  ) 
Value:
BALL_LOGCB_STREAM_CONST_IMP(BloombergLP::ball::Severity::e_FATAL,         \
                                (CALLBACK))
#define BALL_LOGCB_END   ""
#define BALL_LOGVA_CONST_IMP (   SEVERITY,
  ... 
)
Value:
do {                                                                          \
    if (const BloombergLP::ball::CategoryHolder *ball_log_cAtEgOrYhOlDeR =    \
               BloombergLP::ball::Log::categoryHolderIfEnabled<(SEVERITY)>(   \
                      ball_log_getCategoryHolder(BALL_LOG_CATEGORYHOLDER))) { \
        BloombergLP::ball::Log_Formatter ball_log_fOrMaTtEr(                  \
                                       ball_log_cAtEgOrYhOlDeR->category(),   \
                                       __FILE__,                              \
                                       __LINE__,                              \
                                       (SEVERITY));                           \
        BloombergLP::ball::Log::format(ball_log_fOrMaTtEr.messageBuffer(),    \
                                       ball_log_fOrMaTtEr.messageBufferLen(), \
                                       __VA_ARGS__);                          \
    }                                                                         \
} while(0)
#define BALL_LOGVA (   SEVERITY,
  ... 
)
Value:
do {                                                                          \
    const BloombergLP::ball::CategoryHolder *ball_log_cAtEgOrYhOlDeR =        \
                         ball_log_getCategoryHolder(BALL_LOG_CATEGORYHOLDER); \
    if (ball_log_cAtEgOrYhOlDeR->threshold() >= (SEVERITY) &&                 \
           BloombergLP::ball::Log::isCategoryEnabled(ball_log_cAtEgOrYhOlDeR, \
                                                     (SEVERITY))) {           \
        BloombergLP::ball::Log_Formatter ball_log_fOrMaTtEr(                  \
                                       ball_log_cAtEgOrYhOlDeR->category(),   \
                                       __FILE__,                              \
                                       __LINE__,                              \
                                       (SEVERITY));                           \
        BloombergLP::ball::Log::format(ball_log_fOrMaTtEr.messageBuffer(),    \
                                       ball_log_fOrMaTtEr.messageBufferLen(), \
                                       __VA_ARGS__);                          \
    }                                                                         \
} while(0)
#define BALL_LOGVA_TRACE (   ...  )     BALL_LOGVA_CONST_IMP(BloombergLP::ball::Severity::e_TRACE, __VA_ARGS__)
#define BALL_LOGVA_DEBUG (   ...  )     BALL_LOGVA_CONST_IMP(BloombergLP::ball::Severity::e_DEBUG, __VA_ARGS__)
#define BALL_LOGVA_INFO (   ...  )     BALL_LOGVA_CONST_IMP(BloombergLP::ball::Severity::e_INFO, __VA_ARGS__)
#define BALL_LOGVA_WARN (   ...  )     BALL_LOGVA_CONST_IMP(BloombergLP::ball::Severity::e_WARN, __VA_ARGS__)
#define BALL_LOGVA_ERROR (   ...  )     BALL_LOGVA_CONST_IMP(BloombergLP::ball::Severity::e_ERROR, __VA_ARGS__)
#define BALL_LOGVA_FATAL (   ...  )     BALL_LOGVA_CONST_IMP(BloombergLP::ball::Severity::e_FATAL, __VA_ARGS__)
#define BALL_LOG_IS_ENABLED (   SEVERITY  ) 
Value:
((BALL_LOG_THRESHOLD >= (SEVERITY))                                       \
     && BloombergLP::ball::Log::isCategoryEnabled(                            \
                         ball_log_getCategoryHolder(BALL_LOG_CATEGORYHOLDER), \
                         (SEVERITY)))