23#include "CuteLogger_global.h"
27class AbstractAppender;
29CUTELOGGERSHARED_EXPORT Logger *loggerInstance();
30#define logger loggerInstance()
33#define dTrace CuteMessageLogger(loggerInstance(), Logger::Trace, __FILE__, __LINE__, Q_FUNC_INFO).write
34#define dDebug CuteMessageLogger(loggerInstance(), Logger::Debug, __FILE__, __LINE__, Q_FUNC_INFO).write
35#define dInfo CuteMessageLogger(loggerInstance(), Logger::Info, __FILE__, __LINE__, Q_FUNC_INFO).write
36#define dWarning CuteMessageLogger(loggerInstance(), Logger::Warning, __FILE__, __LINE__, Q_FUNC_INFO).write
37#define dError CuteMessageLogger(loggerInstance(), Logger::Error, __FILE__, __LINE__, Q_FUNC_INFO).write
38#define dFatal CuteMessageLogger(loggerInstance(), Logger::Fatal, __FILE__, __LINE__, Q_FUNC_INFO).write
40#define dCTrace(category) CuteMessageLogger(loggerInstance(), Logger::Trace, __FILE__, __LINE__, Q_FUNC_INFO, category).write()
41#define dCDebug(category) CuteMessageLogger(loggerInstance(), Logger::Debug, __FILE__, __LINE__, Q_FUNC_INFO, category).write()
42#define dCInfo(category) CuteMessageLogger(loggerInstance(), Logger::Info, __FILE__, __LINE__, Q_FUNC_INFO, category).write()
43#define dCWarning(category) CuteMessageLogger(loggerInstance(), Logger::Warning, __FILE__, __LINE__, Q_FUNC_INFO, category).write()
44#define dCError(category) CuteMessageLogger(loggerInstance(), Logger::Error, __FILE__, __LINE__, Q_FUNC_INFO, category).write()
45#define dCFatal(category) CuteMessageLogger(loggerInstance(), Logger::Fatal, __FILE__, __LINE__, Q_FUNC_INFO, category).write()
47#define dTraceTime LoggerTimingHelper loggerTimingHelper(loggerInstance(), Logger::Trace, __FILE__, __LINE__, Q_FUNC_INFO); loggerTimingHelper.start
48#define dDebugTime LoggerTimingHelper loggerTimingHelper(loggerInstance(), Logger::Debug, __FILE__, __LINE__, Q_FUNC_INFO); loggerTimingHelper.start
49#define dInfoTime LoggerTimingHelper loggerTimingHelper(loggerInstance(), Logger::Info, __FILE__, __LINE__, Q_FUNC_INFO); loggerTimingHelper.start
51#define dAssert(cond) ((!(cond)) ? loggerInstance()->writeAssert(__FILE__, __LINE__, Q_FUNC_INFO, #cond) : qt_noop())
52#define dAssertX(cond, msg) ((!(cond)) ? loggerInstance()->writeAssert(__FILE__, __LINE__, Q_FUNC_INFO, msg) : qt_noop())
54#define dCategory(category) \
56 Logger* loggerInstance()\
58 static Logger customLoggerInstance(category);\
59 return &customLoggerInstance;\
62#define dGlobalCategory(category) \
64 Logger* loggerInstance()\
66 static Logger customLoggerInstance(category);\
67 customLoggerInstance.logToGlobalInstance(category, true);\
68 return &customLoggerInstance;\
79 Logger(
const QString &defaultCategory);
92 static QString levelToString(LogLevel logLevel);
93 static LogLevel levelFromString(
const QString &s);
95 static Logger *globalInstance();
98 void registerCategoryAppender(
const QString &category,
AbstractAppender *appender);
100 void logToGlobalInstance(
const QString &category,
bool logToGlobal =
false);
102 void setDefaultCategory(
const QString &category);
103 QString defaultCategory()
const;
105 void write(
const QDateTime &timeStamp, LogLevel logLevel,
const char *file,
int line,
const char *function,
const char *category,
106 const QString &message);
107 void write(LogLevel logLevel,
const char *file,
int line,
const char *function,
const char *category,
const QString &message);
108 QDebug write(LogLevel logLevel,
const char *file,
int line,
const char *function,
const char *category);
110 void writeAssert(
const char *file,
int line,
const char *function,
const char *condition);
113 void write(
const QDateTime &timeStamp, LogLevel logLevel,
const char *file,
int line,
const char *function,
const char *category,
114 const QString &message,
bool fromLocalInstance);
130 m_function(function),
139 m_function(function),
143 void write(
const char *msg, ...)
const
144#if defined(Q_CC_GNU) && !defined(__INSURE__)
145# if defined(Q_CC_MINGW) && !defined(Q_CC_CLANG)
146 __attribute__((format(gnu_printf, 2, 3)))
148 __attribute__((format(printf, 2, 3)))
153 void write(
const QString &msg)
const;
155 QDebug write()
const;
162 const char *m_function;
163 const char *m_category;
173 const char *function)
175 m_logLevel(logLevel),
181 void start(
const char *msg, ...)
182#if defined(Q_CC_GNU) && !defined(__INSURE__)
183# if defined(Q_CC_MINGW) && !defined(Q_CC_CLANG)
184 __attribute__((format(gnu_printf, 2, 3)))
186 __attribute__((format(printf, 2, 3)))
191 void start(
const QString &msg = QString());
201 const char *m_function;
The AbstractAppender class provides an abstract base class for writing a log entries.
Definition: AbstractAppender.h:27
Definition: Logger.cpp:513
Very simple but rather powerful component which may be used for logging your application activities.
Definition: Logger.h:74
LogLevel
Describes the possible severity levels of the log records
Definition: Logger.h:83
@ Debug
Debug level. Useful for non-necessary records used for the debugging of the software.
Definition: Logger.h:85
@ Warning
Warning. May be used to log some non-fatal warnings detected by your application.
Definition: Logger.h:87
@ Error
Error. May be used for a big problems making your application work wrong but not crashing.
Definition: Logger.h:88
@ Trace
Trace level. Can be used for mostly unneeded records used for internal code tracing.
Definition: Logger.h:84
@ Info
Info level. Can be used for informational records, which may be interesting for not only developers.
Definition: Logger.h:86