38 #ifndef BLOCXX_LOGGER_HPP_INCLUDE_GUARD_
39 #define BLOCXX_LOGGER_HPP_INCLUDE_GUARD_
40 #include "blocxx/BLOCXX_config.h"
105 E_INVALID_MAX_BACKUP_INDEX
134 void logFatalError(const
String& message, const
char* filename = 0,
int fileline = -1, const
char* methodname = 0) const;
143 void logError(const
String& message, const
char* filename = 0,
int fileline = -1, const
char* methodname = 0) const;
152 void logWarning(const
String& message, const
char* filename = 0,
int fileline = -1, const
char* methodname = 0) const;
161 void logInfo(const
String& message, const
char* filename = 0,
int fileline = -1, const
char* methodname = 0) const;
170 void logDebug(const
String& message, const
char* filename = 0,
int fileline = -1, const
char* methodname = 0) const;
179 void logDebug2(const
String& message, const
char* filename = 0,
int fileline = -1, const
char* methodname = 0) const;
188 void logDebug3(const
String& message, const
char* filename = 0,
int fileline = -1, const
char* methodname = 0) const;
198 void logMessage(const
String& component, const
String& category, const
String& message) const;
209 void logMessage(const
String& component, const
String& category, const
String& message, const
char* filename,
int fileline, const
char* methodname) const;
217 void logMessage(const
String& category, const
String& message) const;
228 void logMessage(const
String& category, const
String& message, const
char* filename,
int fileline, const
char* methodname) const;
235 void logMessage(const
LogMessage& message) const;
242 void setDefaultComponent(const
String& component);
248 String getDefaultComponent() const;
273 void setLogLevel(
const String& logLevel);
294 bool categoryIsEnabled(
const String& category)
const;
299 bool levelIsEnabled(
const ELogLevel level)
const;
304 bool componentAndCategoryAreEnabled(
const String& component,
const String& category)
const;
319 void processLogMessage(
const LogMessage& message)
const;
331 #if defined(BLOCXX_HAVE_UUPRETTY_FUNCTIONUU)
332 #define BLOCXX_LOGGER_PRETTY_FUNCTION __PRETTY_FUNCTION__
333 #elif defined(BLOCXX_HAVE_C99_UUFUNCUU)
334 #define BLOCXX_LOGGER_PRETTY_FUNCTION __func__
336 #define BLOCXX_LOGGER_PRETTY_FUNCTION ""
345 #define BLOCXX_LOG_DEBUG3(logger, message) \
349 if (::BLOCXX_NAMESPACE::Logger::asLogger((logger)).getLogLevel() >= ::BLOCXX_NAMESPACE::E_DEBUG3_LEVEL) \
351 ::BLOCXX_NAMESPACE::Logger::asLogger((logger)).logMessage(::BLOCXX_NAMESPACE::Logger::STR_DEBUG3_CATEGORY, (message), __FILE__, __LINE__, BLOCXX_LOGGER_PRETTY_FUNCTION); \
363 #define BLOCXX_LOG_DEBUG2(logger, message) \
367 if (::BLOCXX_NAMESPACE::Logger::asLogger((logger)).getLogLevel() >= ::BLOCXX_NAMESPACE::E_DEBUG2_LEVEL) \
369 ::BLOCXX_NAMESPACE::Logger::asLogger((logger)).logMessage(::BLOCXX_NAMESPACE::Logger::STR_DEBUG2_CATEGORY, (message), __FILE__, __LINE__, BLOCXX_LOGGER_PRETTY_FUNCTION); \
381 #define BLOCXX_LOG_DEBUG(logger, message) \
385 if (::BLOCXX_NAMESPACE::Logger::asLogger((logger)).getLogLevel() >= ::BLOCXX_NAMESPACE::E_DEBUG_LEVEL) \
387 ::BLOCXX_NAMESPACE::Logger::asLogger((logger)).logMessage(::BLOCXX_NAMESPACE::Logger::STR_DEBUG_CATEGORY, (message), __FILE__, __LINE__, BLOCXX_LOGGER_PRETTY_FUNCTION); \
399 #define BLOCXX_LOG_INFO(logger, message) \
403 if (::BLOCXX_NAMESPACE::Logger::asLogger((logger)).getLogLevel() >= ::BLOCXX_NAMESPACE::E_INFO_LEVEL) \
405 ::BLOCXX_NAMESPACE::Logger::asLogger((logger)).logMessage(::BLOCXX_NAMESPACE::Logger::STR_INFO_CATEGORY, (message), __FILE__, __LINE__, BLOCXX_LOGGER_PRETTY_FUNCTION); \
416 #define BLOCXX_LOG_WARNING(logger, message) \
420 if (::BLOCXX_NAMESPACE::Logger::asLogger((logger)).getLogLevel() >= ::BLOCXX_NAMESPACE::E_WARNING_LEVEL) \
422 ::BLOCXX_NAMESPACE::Logger::asLogger((logger)).logMessage(::BLOCXX_NAMESPACE::Logger::STR_WARNING_CATEGORY, (message), __FILE__, __LINE__, BLOCXX_LOGGER_PRETTY_FUNCTION); \
433 #define BLOCXX_LOG_ERROR(logger, message) \
437 if (::BLOCXX_NAMESPACE::Logger::asLogger((logger)).getLogLevel() >= ::BLOCXX_NAMESPACE::E_ERROR_LEVEL) \
439 ::BLOCXX_NAMESPACE::Logger::asLogger((logger)).logMessage(::BLOCXX_NAMESPACE::Logger::STR_ERROR_CATEGORY, (message), __FILE__, __LINE__, BLOCXX_LOGGER_PRETTY_FUNCTION); \
450 #define BLOCXX_LOG_FATAL_ERROR(logger, message) \
454 if (::BLOCXX_NAMESPACE::Logger::asLogger((logger)).getLogLevel() >= ::BLOCXX_NAMESPACE::E_FATAL_ERROR_LEVEL) \
456 ::BLOCXX_NAMESPACE::Logger::asLogger((logger)).logMessage(::BLOCXX_NAMESPACE::Logger::STR_FATAL_CATEGORY, (message), __FILE__, __LINE__, BLOCXX_LOGGER_PRETTY_FUNCTION); \
468 #define BLOCXX_LOG(logger, category, message) \
472 if (::BLOCXX_NAMESPACE::Logger::asLogger((logger)).categoryIsEnabled((category))) \
474 ::BLOCXX_NAMESPACE::Logger::asLogger((logger)).logMessage((category), (message), __FILE__, __LINE__, BLOCXX_LOGGER_PRETTY_FUNCTION); \
489 #define BLOCXX_SLOG_DEBUG3(logger, message) \
493 if (::BLOCXX_NAMESPACE::Logger::asLogger((logger)).getLogLevel() >= ::BLOCXX_NAMESPACE::E_DEBUG3_LEVEL) \
497 ::BLOCXX_NAMESPACE::Logger::asLogger((logger)).logMessage(::BLOCXX_NAMESPACE::Logger::STR_DEBUG3_CATEGORY, buf.toString(), __FILE__, __LINE__, BLOCXX_LOGGER_PRETTY_FUNCTION); \
512 #define BLOCXX_SLOG_DEBUG2(logger, message) \
516 if (::BLOCXX_NAMESPACE::Logger::asLogger((logger)).getLogLevel() >= ::BLOCXX_NAMESPACE::E_DEBUG2_LEVEL) \
520 ::BLOCXX_NAMESPACE::Logger::asLogger((logger)).logMessage(::BLOCXX_NAMESPACE::Logger::STR_DEBUG2_CATEGORY, buf.toString(), __FILE__, __LINE__, BLOCXX_LOGGER_PRETTY_FUNCTION); \
535 #define BLOCXX_SLOG_DEBUG(logger, message) \
539 if (::BLOCXX_NAMESPACE::Logger::asLogger((logger)).getLogLevel() >= ::BLOCXX_NAMESPACE::E_DEBUG_LEVEL) \
543 ::BLOCXX_NAMESPACE::Logger::asLogger((logger)).logMessage(::BLOCXX_NAMESPACE::Logger::STR_DEBUG_CATEGORY, buf.toString(), __FILE__, __LINE__, BLOCXX_LOGGER_PRETTY_FUNCTION); \
558 #define BLOCXX_SLOG_INFO(logger, message) \
562 if (::BLOCXX_NAMESPACE::Logger::asLogger((logger)).getLogLevel() >= ::BLOCXX_NAMESPACE::E_INFO_LEVEL) \
566 ::BLOCXX_NAMESPACE::Logger::asLogger((logger)).logMessage(::BLOCXX_NAMESPACE::Logger::STR_INFO_CATEGORY, buf.toString(), __FILE__, __LINE__, BLOCXX_LOGGER_PRETTY_FUNCTION); \
581 #define BLOCXX_SLOG_WARNING(logger, message) \
585 if (::BLOCXX_NAMESPACE::Logger::asLogger((logger)).getLogLevel() >= ::BLOCXX_NAMESPACE::E_WARNING_LEVEL) \
589 ::BLOCXX_NAMESPACE::Logger::asLogger((logger)).logMessage(::BLOCXX_NAMESPACE::Logger::STR_WARNING_CATEGORY, buf.toString(), __FILE__, __LINE__, BLOCXX_LOGGER_PRETTY_FUNCTION); \
604 #define BLOCXX_SLOG_ERROR(logger, message) \
608 if (::BLOCXX_NAMESPACE::Logger::asLogger((logger)).getLogLevel() >= ::BLOCXX_NAMESPACE::E_ERROR_LEVEL) \
612 ::BLOCXX_NAMESPACE::Logger::asLogger((logger)).logMessage(::BLOCXX_NAMESPACE::Logger::STR_ERROR_CATEGORY, buf.toString(), __FILE__, __LINE__, BLOCXX_LOGGER_PRETTY_FUNCTION); \
626 #define BLOCXX_SLOG_FATAL_ERROR(logger, message) \
630 if (::BLOCXX_NAMESPACE::Logger::asLogger((logger)).getLogLevel() >= ::BLOCXX_NAMESPACE::E_FATAL_ERROR_LEVEL) \
634 ::BLOCXX_NAMESPACE::Logger::asLogger((logger)).logMessage(::BLOCXX_NAMESPACE::Logger::STR_FATAL_CATEGORY, buf.toString(), __FILE__, __LINE__, BLOCXX_LOGGER_PRETTY_FUNCTION); \
650 #define BLOCXX_SLOG(logger, category, message) \
654 if (::BLOCXX_NAMESPACE::Logger::asLogger((logger)).categoryIsEnabled((category))) \
658 ::BLOCXX_NAMESPACE::Logger::asLogger((logger)).logMessage((category), buf.toString(), __FILE__, __LINE__, BLOCXX_LOGGER_PRETTY_FUNCTION); \
663 #endif // BLOCXX_LOGGER_HPP_INCLUDE_GUARD_
BLOCXX_EXPORT_TEMPLATE(BLOCXX_COMMON_API, Array, Bool)
static const GlobalString STR_NONE_CATEGORY
String m_defaultComponent
const UInt32 INFINITE_TIMEOUT BLOCXX_DEPRECATED
Value that means infinite timeout.
IntrusiveReference< LogAppender > LogAppenderRef
static const GlobalString STR_ALL_CATEGORY
static const GlobalString STR_DEBUG2_CATEGORY
void swap(Array< T > &x, Array< T > &y)
This String class is an abstract data type that represents as NULL terminated string of characters...
static const GlobalString STR_INFO_CATEGORY
static const GlobalString STR_DEBUG3_CATEGORY
static const GlobalString STR_FATAL_CATEGORY
LogAppenderRef m_appender
static const Logger & asLogger(const LoggerRef &lgr)
static const GlobalString STR_WARNING_CATEGORY
static const Logger & asLogger(const Logger &lgr)
Utility functions for backward compatibility with LoggerRef and the BLOCXX_LOG macros.
class BLOCXX_COMMON_API Logger
static const GlobalString STR_DEBUG_CATEGORY
This class can be used to store a global variable that is lazily initialized in a thread safe manner...
static const GlobalString STR_ERROR_CATEGORY
#define BLOCXX_DECLARE_APIEXCEPTION(NAME, LINKAGE_SPEC)
Declare a new exception class named Exception that derives from Exception This macro is typical...
static const GlobalString STR_DEFAULT_COMPONENT