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>
44QUENTIER_EXPORT QDebug & operator<<(QDebug & dbg,
const LogLevel logLevel);
46QUENTIER_EXPORT QTextStream & operator<<(
47 QTextStream & strm,
const LogLevel logLevel);
56void QUENTIER_EXPORT QuentierInitializeLogging();
61void QUENTIER_EXPORT QuentierAddLogEntry(
62 const QString & sourceFileName,
const int sourceFileLineNumber,
63 const QString & component,
const QString & message,
64 const LogLevel logLevel);
71LogLevel QUENTIER_EXPORT QuentierMinLogLevel();
76void QUENTIER_EXPORT QuentierSetMinLogLevel(
const LogLevel logLevel);
82void QUENTIER_EXPORT QuentierAddStdOutLogDestination();
88bool QUENTIER_EXPORT QuentierIsLogLevelActive(
const LogLevel logLevel);
93QString QUENTIER_EXPORT QuentierLogFilesDirPath();
98void QUENTIER_EXPORT QuentierRestartLogging();
103QRegularExpression QUENTIER_EXPORT QuentierLogComponentFilter();
109QuentierSetLogComponentFilter(
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 ":"