19 #ifndef LIB_QUENTIER_LOGGING_QUENTIER_LOGGER_H
20 #define LIB_QUENTIER_LOGGING_QUENTIER_LOGGER_H
22 #include <quentier/utility/Linkage.h>
25 #include <QRegularExpression>
27 #include <QTextStream>
44 QUENTIER_EXPORT QDebug & operator<<(QDebug & dbg,
const LogLevel logLevel);
46 QUENTIER_EXPORT QTextStream & operator<<(
47 QTextStream & strm,
const LogLevel logLevel);
56 void QUENTIER_EXPORT QuentierInitializeLogging();
61 void QUENTIER_EXPORT QuentierAddLogEntry(
62 const QString & sourceFileName,
const int sourceFileLineNumber,
63 const QString & component,
const QString & message,
64 const LogLevel logLevel);
71 LogLevel QUENTIER_EXPORT QuentierMinLogLevel();
76 void QUENTIER_EXPORT QuentierSetMinLogLevel(
const LogLevel logLevel);
82 void QUENTIER_EXPORT QuentierAddStdOutLogDestination();
88 bool QUENTIER_EXPORT QuentierIsLogLevelActive(
const LogLevel logLevel);
93 QString QUENTIER_EXPORT QuentierLogFilesDirPath();
98 void QUENTIER_EXPORT QuentierRestartLogging();
103 QRegularExpression QUENTIER_EXPORT QuentierLogComponentFilter();
109 QuentierSetLogComponentFilter(
const QRegularExpression & filter);
113 #define __QNLOG_BASE(component, message, level) \
114 if (quentier::QuentierIsLogLevelActive(quentier::LogLevel::level)) { \
120 quentier::QuentierAddLogEntry( \
121 QStringLiteral(__FILE__), __LINE__, QString::fromUtf8(component), \
122 msg, quentier::LogLevel::level); \
126 #define QNTRACE(component, message) \
127 __QNLOG_BASE(component, message, Trace) \
130 #define QNDEBUG(component, message) \
131 __QNLOG_BASE(component, message, Debug) \
134 #define QNINFO(component, message) \
135 __QNLOG_BASE(component, message, Info) \
138 #define QNWARNING(component, message) \
139 __QNLOG_BASE(component, message, Warning) \
142 #define QNERROR(component, message) \
143 __QNLOG_BASE(component, message, Error) \
146 #define QUENTIER_SET_MIN_LOG_LEVEL(level) \
147 quentier::QuentierSetMinLogLevel( \
148 quentier::LogLevel::level)
150 #define QUENTIER_INITIALIZE_LOGGING() \
151 quentier::QuentierInitializeLogging()
153 #define QUENTIER_ADD_STDOUT_LOG_DESTINATION() \
155 QuentierAddStdOutLogDestination()
157 #define QNLOG_FILE_LINENUMBER_DELIMITER ":"