21#include <QElapsedTimer>
24#include "CuteLogger_global.h"
29CUTELOGGERSHARED_EXPORT
Logger* cuteLoggerInstance();
30#define cuteLogger cuteLoggerInstance()
33#define LOG_TRACE CuteMessageLogger(cuteLoggerInstance(), Logger::Trace, __FILE__, __LINE__, Q_FUNC_INFO).write
34#define LOG_DEBUG CuteMessageLogger(cuteLoggerInstance(), Logger::Debug, __FILE__, __LINE__, Q_FUNC_INFO).write
35#define LOG_INFO CuteMessageLogger(cuteLoggerInstance(), Logger::Info, __FILE__, __LINE__, Q_FUNC_INFO).write
36#define LOG_WARNING CuteMessageLogger(cuteLoggerInstance(), Logger::Warning, __FILE__, __LINE__, Q_FUNC_INFO).write
37#define LOG_ERROR CuteMessageLogger(cuteLoggerInstance(), Logger::Error, __FILE__, __LINE__, Q_FUNC_INFO).write
38#define LOG_FATAL CuteMessageLogger(cuteLoggerInstance(), Logger::Fatal, __FILE__, __LINE__, Q_FUNC_INFO).write
40#define LOG_CTRACE(category) CuteMessageLogger(cuteLoggerInstance(), Logger::Trace, __FILE__, __LINE__, Q_FUNC_INFO, category).write()
41#define LOG_CDEBUG(category) CuteMessageLogger(cuteLoggerInstance(), Logger::Debug, __FILE__, __LINE__, Q_FUNC_INFO, category).write()
42#define LOG_CINFO(category) CuteMessageLogger(cuteLoggerInstance(), Logger::Info, __FILE__, __LINE__, Q_FUNC_INFO, category).write()
43#define LOG_CWARNING(category) CuteMessageLogger(cuteLoggerInstance(), Logger::Warning, __FILE__, __LINE__, Q_FUNC_INFO, category).write()
44#define LOG_CERROR(category) CuteMessageLogger(cuteLoggerInstance(), Logger::Error, __FILE__, __LINE__, Q_FUNC_INFO, category).write()
45#define LOG_CFATAL(category) CuteMessageLogger(cuteLoggerInstance(), Logger::Fatal, __FILE__, __LINE__, Q_FUNC_INFO, category).write()
47#define LOG_TRACE_TIME LoggerTimingHelper loggerTimingHelper(cuteLoggerInstance(), Logger::Trace, __FILE__, __LINE__, Q_FUNC_INFO); loggerTimingHelper.start
48#define LOG_DEBUG_TIME LoggerTimingHelper loggerTimingHelper(cuteLoggerInstance(), Logger::Debug, __FILE__, __LINE__, Q_FUNC_INFO); loggerTimingHelper.start
49#define LOG_INFO_TIME LoggerTimingHelper loggerTimingHelper(cuteLoggerInstance(), Logger::Info, __FILE__, __LINE__, Q_FUNC_INFO); loggerTimingHelper.start
51#define LOG_ASSERT(cond) ((!(cond)) ? cuteLoggerInstance()->writeAssert(__FILE__, __LINE__, Q_FUNC_INFO, #cond) : qt_noop())
52#define LOG_ASSERT_X(cond, msg) ((!(cond)) ? cuteLoggerInstance()->writeAssert(__FILE__, __LINE__, Q_FUNC_INFO, msg) : qt_noop())
54#define LOG_CATEGORY(category) \
56 Logger* cuteLoggerInstance()\
58 static Logger customCuteLoggerInstance(category);\
59 return &customCuteLoggerInstance;\
62#define LOG_GLOBAL_CATEGORY(category) \
64 Logger* cuteLoggerInstance()\
66 static Logger customCuteLoggerInstance(category);\
67 customCuteLoggerInstance.logToGlobalInstance(category, true);\
68 return &customCuteLoggerInstance;\
79 Logger(
const QString& defaultCategory);
100 static QString levelToString(LogLevel logLevel);
101 static LogLevel levelFromString(
const QString& s);
103 static Logger* globalInstance();
106 void registerCategoryAppender(
const QString& category,
AbstractAppender* appender);
110 void logToGlobalInstance(
const QString& category,
bool logToGlobal =
false);
112 void setDefaultCategory(
const QString& category);
113 QString defaultCategory()
const;
115 void write(
const QDateTime& timeStamp, LogLevel logLevel,
const char* file,
int line,
const char* function,
const char* category,
116 const QString& message);
117 void write(LogLevel logLevel,
const char* file,
int line,
const char* function,
const char* category,
const QString& message);
118 QDebug write(LogLevel logLevel,
const char* file,
int line,
const char* function,
const char* category);
120 void writeAssert(
const char* file,
int line,
const char* function,
const char* condition);
123 void write(
const QDateTime& timeStamp, LogLevel logLevel,
const char* file,
int line,
const char* function,
const char* category,
124 const QString& message,
bool fromLocalInstance);
126 LoggerPrivate* d_ptr;
130class CUTELOGGERSHARED_EXPORT CuteMessageLogger
132 Q_DISABLE_COPY(CuteMessageLogger)
135 Q_DECL_CONSTEXPR CuteMessageLogger(
Logger* l,
Logger::LogLevel level,
const char* file,
int line,
const char* function)
140 m_function(function),
144 Q_DECL_CONSTEXPR CuteMessageLogger(
Logger* l,
Logger::LogLevel level,
const char* file,
int line,
const char* function,
const char* category)
149 m_function(function),
153 void write(
const char* msg, ...) const
154#if defined(Q_CC_GNU) && !defined(__INSURE__)
155# if defined(Q_CC_MINGW) && !defined(Q_CC_CLANG)
156 __attribute__ ((format (gnu_printf, 2, 3)))
158 __attribute__ ((format (printf, 2, 3)))
163 void write(
const QString& msg)
const;
165 QDebug write()
const;
172 const char* m_function;
173 const char* m_category;
177class CUTELOGGERSHARED_EXPORT LoggerTimingHelper
179 Q_DISABLE_COPY(LoggerTimingHelper)
183 const char* function)
185 m_logLevel(logLevel),
186 m_timingMode(
Logger::TimingAuto),
192 void start(
const char* msg, ...)
193#if defined(Q_CC_GNU) && !defined(__INSURE__)
194 # if defined(Q_CC_MINGW) && !defined(Q_CC_CLANG)
195 __attribute__ ((format (gnu_printf, 2, 3)))
197 __attribute__ ((format (printf, 2, 3)))
202 void start(
const QString& msg = QString());
205 ~LoggerTimingHelper();
209 QElapsedTimer m_time;
214 const char* m_function;
The AbstractAppender class provides an abstract base class for writing a log entries.
Definition: AbstractAppender.h:26
Very simple but rather powerful component which may be used for logging your application activities.
Definition: Logger.h:74
TimingMode
Sets the timing display mode for the LOG_TRACE_TIME, LOG_DEBUG_TIME and LOG_INFO_TIME macros.
Definition: Logger.h:95
@ TimingAuto
Show time in seconds, if it exceeds 10s (default)
Definition: Logger.h:96
LogLevel
Describes the possible severity levels of the log records.
Definition: Logger.h:84
@ Debug
Debug level. Useful for non-necessary records used for the debugging of the software.
Definition: Logger.h:86
@ Warning
Warning. May be used to log some non-fatal warnings detected by your application.
Definition: Logger.h:88
@ Trace
Trace level. Can be used for mostly unneeded records used for internal code tracing.
Definition: Logger.h:85
@ Info
Info level. Can be used for informational records, which may be interesting for not only developers.
Definition: Logger.h:87
@ Error
Error. May be used for a big problems making your application work wrong but not crashing.
Definition: Logger.h:89