QEverCloud 6.1.0
Unofficial Evernote Cloud API for Qt
Loading...
Searching...
No Matches
Log.h
Go to the documentation of this file.
1
8#ifndef QEVERCLOUD_LOG_H
9#define QEVERCLOUD_LOG_H
10
11#include "Export.h"
12#include "Helpers.h"
13
14#include <QDateTime>
15#include <QDebug>
16#include <QObject>
17#include <QTextStream>
18
19#include <memory>
20
21namespace qevercloud {
22
24
25enum class LogLevel
26{
27 Trace = 0,
28 Debug,
29 Info,
30 Warn,
31 Error
32};
33
35 QTextStream & out, const LogLevel level);
36
38 QDebug & out, const LogLevel level);
39
41
43{
44public:
45 virtual bool shouldLog(
46 const LogLevel level, const char * component) const = 0;
47
48 virtual void log(
49 const LogLevel level, const char * component, const char * fileName,
50 const quint32 lineNumber, const qint64 timestamp,
51 const QString & message) = 0;
52
53 virtual void setLevel(const LogLevel level) = 0;
54
55 virtual LogLevel level() const = 0;
56};
57
58using ILoggerPtr = std::shared_ptr<ILogger>;
59
61
63
65
67
69
71
72#define __QEVERCLOUD_LOG_BASE(component, level, message) \
73 { \
74 auto __qevercloudLogger = ::qevercloud::logger(); \
75 if (__qevercloudLogger->shouldLog(level, component)) \
76 { \
77 QString msg; \
78 QDebug dbg(&msg); \
79 dbg.nospace(); \
80 dbg.noquote(); \
81 dbg << message; \
82 __qevercloudLogger->log( \
83 level, \
84 component, \
85 __FILE__, \
86 __LINE__, \
87 QDateTime::currentMSecsSinceEpoch(), \
88 msg); \
89 } \
90 } \
91// __QEVERCLOUD_LOG_BASE
92
93#define QEC_TRACE(component, message) \
94 __QEVERCLOUD_LOG_BASE(component, LogLevel::Trace, message) \
95// QEC_TRACE
96
97#define QEC_DEBUG(component, message) \
98 __QEVERCLOUD_LOG_BASE(component, LogLevel::Debug, message) \
99// QEC_DEBUG
100
101#define QEC_INFO(component, message) \
102 __QEVERCLOUD_LOG_BASE(component, LogLevel::Info, message) \
103// QEC_INFO
104
105#define QEC_WARNING(component, message) \
106 __QEVERCLOUD_LOG_BASE(component, LogLevel::Warn, message) \
107// QEC_WARNING
108
109#define QEC_ERROR(component, message) \
110 __QEVERCLOUD_LOG_BASE(component, LogLevel::Error, message) \
111// QEC_ERROR
112
113} // namespace qevercloud
114
115#endif // QEVERCLOUD_LOG_H
#define QEVERCLOUD_EXPORT
Definition: Export.h:19
Definition: Log.h:43
virtual void log(const LogLevel level, const char *component, const char *fileName, const quint32 lineNumber, const qint64 timestamp, const QString &message)=0
virtual bool shouldLog(const LogLevel level, const char *component) const =0
virtual LogLevel level() const =0
virtual void setLevel(const LogLevel level)=0
Definition: AsyncResult.h:21
QEVERCLOUD_EXPORT QTextStream & operator<<(QTextStream &out, const EDAMErrorCode value)
std::shared_ptr< ILogger > ILoggerPtr
Definition: Log.h:58
QEVERCLOUD_EXPORT ILoggerPtr nullLogger()
QEVERCLOUD_EXPORT void setLogger(ILoggerPtr logger)
LogLevel
Definition: Log.h:26
QEVERCLOUD_EXPORT ILoggerPtr logger()
QEVERCLOUD_EXPORT ILoggerPtr newStdErrLogger(LogLevel level=LogLevel::Warn)