QEverCloud  6.1.0
Unofficial Evernote Cloud API for Qt
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 
21 namespace qevercloud {
22 
24 
25 enum 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 {
44 public:
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 
58 using 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
Export.h
qevercloud::LogLevel::Info
@ Info
qevercloud::LogLevel::Trace
@ Trace
qevercloud::setLogger
QEVERCLOUD_EXPORT void setLogger(ILoggerPtr logger)
qevercloud::nullLogger
QEVERCLOUD_EXPORT ILoggerPtr nullLogger()
qevercloud
Definition: AsyncResult.h:21
qevercloud::ILogger::level
virtual LogLevel level() const =0
qevercloud::LogLevel::Error
@ Error
Helpers.h
qevercloud::ILogger
Definition: Log.h:43
qevercloud::ILogger::shouldLog
virtual bool shouldLog(const LogLevel level, const char *component) const =0
qevercloud::LogLevel
LogLevel
Definition: Log.h:26
qevercloud::ILoggerPtr
std::shared_ptr< ILogger > ILoggerPtr
Definition: Log.h:58
qevercloud::ILogger::setLevel
virtual void setLevel(const LogLevel level)=0
qevercloud::LogLevel::Warn
@ Warn
qevercloud::ILogger::log
virtual void log(const LogLevel level, const char *component, const char *fileName, const quint32 lineNumber, const qint64 timestamp, const QString &message)=0
qevercloud::logger
QEVERCLOUD_EXPORT ILoggerPtr logger()
qevercloud::newStdErrLogger
QEVERCLOUD_EXPORT ILoggerPtr newStdErrLogger(LogLevel level=LogLevel::Warn)
QEVERCLOUD_EXPORT
#define QEVERCLOUD_EXPORT
Definition: Export.h:19
qevercloud::operator<<
QEVERCLOUD_EXPORT QTextStream & operator<<(QTextStream &out, const EDAMErrorCode value)
qevercloud::LogLevel::Debug
@ Debug