23 #include "CuteLogger_global.h" 28 CUTELOGGERSHARED_EXPORT
Logger* cuteLoggerInstance();
29 #define cuteLogger cuteLoggerInstance() 32 #define LOG_TRACE CuteMessageLogger(cuteLoggerInstance(), Logger::Trace, __FILE__, __LINE__, Q_FUNC_INFO).write 33 #define LOG_DEBUG CuteMessageLogger(cuteLoggerInstance(), Logger::Debug, __FILE__, __LINE__, Q_FUNC_INFO).write 34 #define LOG_INFO CuteMessageLogger(cuteLoggerInstance(), Logger::Info, __FILE__, __LINE__, Q_FUNC_INFO).write 35 #define LOG_WARNING CuteMessageLogger(cuteLoggerInstance(), Logger::Warning, __FILE__, __LINE__, Q_FUNC_INFO).write 36 #define LOG_ERROR CuteMessageLogger(cuteLoggerInstance(), Logger::Error, __FILE__, __LINE__, Q_FUNC_INFO).write 37 #define LOG_FATAL CuteMessageLogger(cuteLoggerInstance(), Logger::Fatal, __FILE__, __LINE__, Q_FUNC_INFO).write 39 #define LOG_CTRACE(category) CuteMessageLogger(cuteLoggerInstance(), Logger::Trace, __FILE__, __LINE__, Q_FUNC_INFO, category).write() 40 #define LOG_CDEBUG(category) CuteMessageLogger(cuteLoggerInstance(), Logger::Debug, __FILE__, __LINE__, Q_FUNC_INFO, category).write() 41 #define LOG_CINFO(category) CuteMessageLogger(cuteLoggerInstance(), Logger::Info, __FILE__, __LINE__, Q_FUNC_INFO, category).write() 42 #define LOG_CWARNING(category) CuteMessageLogger(cuteLoggerInstance(), Logger::Warning, __FILE__, __LINE__, Q_FUNC_INFO, category).write() 43 #define LOG_CERROR(category) CuteMessageLogger(cuteLoggerInstance(), Logger::Error, __FILE__, __LINE__, Q_FUNC_INFO, category).write() 44 #define LOG_CFATAL(category) CuteMessageLogger(cuteLoggerInstance(), Logger::Fatal, __FILE__, __LINE__, Q_FUNC_INFO, category).write() 46 #define LOG_TRACE_TIME LoggerTimingHelper loggerTimingHelper(cuteLoggerInstance(), Logger::Trace, __FILE__, __LINE__, Q_FUNC_INFO); loggerTimingHelper.start 47 #define LOG_DEBUG_TIME LoggerTimingHelper loggerTimingHelper(cuteLoggerInstance(), Logger::Debug, __FILE__, __LINE__, Q_FUNC_INFO); loggerTimingHelper.start 48 #define LOG_INFO_TIME LoggerTimingHelper loggerTimingHelper(cuteLoggerInstance(), Logger::Info, __FILE__, __LINE__, Q_FUNC_INFO); loggerTimingHelper.start 50 #define LOG_ASSERT(cond) ((!(cond)) ? cuteLoggerInstance()->writeAssert(__FILE__, __LINE__, Q_FUNC_INFO, #cond) : qt_noop()) 51 #define LOG_ASSERT_X(cond, msg) ((!(cond)) ? cuteLoggerInstance()->writeAssert(__FILE__, __LINE__, Q_FUNC_INFO, msg) : qt_noop()) 53 #if (__cplusplus >= 201103L) 56 #define LOG_CATEGORY(category) \ 57 Logger customCuteLoggerInstance{category};\ 58 std::function<Logger*()> cuteLoggerInstance = [&customCuteLoggerInstance]() {\ 59 return &customCuteLoggerInstance;\ 62 #define LOG_GLOBAL_CATEGORY(category) \ 63 Logger customCuteLoggerInstance{category, true};\ 64 std::function<Logger*()> cuteLoggerInstance = [&customCuteLoggerInstance]() {\ 65 return &customCuteLoggerInstance;\ 70 #define LOG_CATEGORY(category) \ 71 Logger* cuteLoggerInstance()\ 73 static Logger customCuteLoggerInstance(category);\ 74 return &customCuteLoggerInstance;\ 77 #define LOG_GLOBAL_CATEGORY(category) \ 78 Logger* cuteLoggerInstance()\ 80 static Logger customCuteLoggerInstance(category);\ 81 customCuteLoggerInstance.logToGlobalInstance(category, true);\ 82 return &customCuteLoggerInstance;\ 95 Logger(
const QString& defaultCategory,
bool writeToGlobalInstance =
false);
116 static QString levelToString(
LogLevel logLevel);
117 static LogLevel levelFromString(
const QString& s);
119 static Logger* globalInstance();
122 void registerCategoryAppender(
const QString& category,
AbstractAppender* appender);
126 void logToGlobalInstance(
const QString& category,
bool logToGlobal =
false);
128 void setDefaultCategory(
const QString& category);
129 QString defaultCategory()
const;
131 void write(
const QDateTime& timeStamp,
LogLevel logLevel,
const char* file,
int line,
const char*
function,
const char* category,
132 const QString& message);
133 void write(
LogLevel logLevel,
const char* file,
int line,
const char*
function,
const char* category,
const QString& message);
134 QDebug write(
LogLevel logLevel,
const char* file,
int line,
const char*
function,
const char* category);
136 void writeAssert(
const char* file,
int line,
const char*
function,
const char* condition);
139 void write(
const QDateTime& timeStamp,
LogLevel logLevel,
const char* file,
int line,
const char*
function,
const char* category,
140 const QString& message,
bool fromLocalInstance);
142 LoggerPrivate* d_ptr;
146 class CUTELOGGERSHARED_EXPORT CuteMessageLogger
148 Q_DISABLE_COPY(CuteMessageLogger)
151 Q_DECL_CONSTEXPR CuteMessageLogger(
Logger* l,
Logger::LogLevel level,
const char* file,
int line,
const char*
function)
156 m_function(function),
160 Q_DECL_CONSTEXPR CuteMessageLogger(
Logger* l,
Logger::LogLevel level,
const char* file,
int line,
const char*
function,
const char* category)
165 m_function(function),
169 void write(
const char* msg, ...) const
170 #if defined(Q_CC_GNU) && !defined(__INSURE__) 171 # if defined(Q_CC_MINGW) && !defined(Q_CC_CLANG) 172 __attribute__ ((format (gnu_printf, 2, 3)))
174 __attribute__ ((format (printf, 2, 3)))
179 void write(
const QString& msg)
const;
181 QDebug write()
const;
188 const char* m_function;
189 const char* m_category;
193 class CUTELOGGERSHARED_EXPORT LoggerTimingHelper
195 Q_DISABLE_COPY(LoggerTimingHelper)
199 const char*
function)
201 m_logLevel(logLevel),
202 m_timingMode(
Logger::TimingAuto),
208 void start(
const char* msg, ...)
209 #if defined(Q_CC_GNU) && !defined(__INSURE__) 210 # if defined(Q_CC_MINGW) && !defined(Q_CC_CLANG) 211 __attribute__ ((format (gnu_printf, 2, 3)))
213 __attribute__ ((format (printf, 2, 3)))
218 void start(
const QString& msg = QString());
221 ~LoggerTimingHelper();
230 const char* m_function;
Very simple but rather powerful component which may be used for logging your application activities...
Definition: Logger.h:89
Trace level. Can be used for mostly unneeded records used for internal code tracing.
Definition: Logger.h:101
Warning. May be used to log some non-fatal warnings detected by your application. ...
Definition: Logger.h:104
The AbstractAppender class provides an abstract base class for writing a log entries.
Definition: AbstractAppender.h:25
LogLevel
Describes the possible severity levels of the log records.
Definition: Logger.h:99
Info level. Can be used for informational records, which may be interesting for not only developers...
Definition: Logger.h:103
Debug level. Useful for non-necessary records used for the debugging of the software.
Definition: Logger.h:102
Error. May be used for a big problems making your application work wrong but not crashing.
Definition: Logger.h:105
TimingMode
Sets the timing display mode for the LOG_TRACE_TIME, LOG_DEBUG_TIME and LOG_INFO_TIME macros...
Definition: Logger.h:110
Show time in seconds, if it exceeds 10s (default)
Definition: Logger.h:112