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
125 virtual LoggerRef clone() const BLOCXX_DEPRECATED;
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); \
#define BLOCXX_DECLARE_APIEXCEPTION(NAME, LINKAGE_SPEC)
Declare a new exception class named <NAME>Exception that derives from Exception This macro is typical...
This class can be used to store a global variable that is lazily initialized in a thread safe manner.
static const Logger & asLogger(const LoggerRef &lgr)
static const GlobalString STR_DEBUG2_CATEGORY
static const GlobalString STR_WARNING_CATEGORY
static const GlobalString STR_DEBUG3_CATEGORY
String m_defaultComponent
static const GlobalString STR_DEBUG_CATEGORY
static const GlobalString STR_ALL_CATEGORY
LogAppenderRef m_appender
static const GlobalString STR_FATAL_CATEGORY
static const Logger & asLogger(const Logger &lgr)
Utility functions for backward compatibility with LoggerRef and the BLOCXX_LOG macros.
static const GlobalString STR_ERROR_CATEGORY
@ E_UNKNOWN_LOG_APPENDER_TYPE
@ E_INVALID_MAX_FILE_SIZE
static const GlobalString STR_DEFAULT_COMPONENT
static const GlobalString STR_INFO_CATEGORY
static const GlobalString STR_NONE_CATEGORY
This String class is an abstract data type that represents as NULL terminated string of characters.
class BLOCXX_COMMON_API Logger
BLOCXX_EXPORT_TEMPLATE(BLOCXX_COMMON_API, Array, Bool)
IntrusiveReference< LogAppender > LogAppenderRef
void swap(Array< T > &x, Array< T > &y)