Transfer Ease
Loading...
Searching...
No Matches
abstractlogger.h
1#ifndef TEASE_LOGS_ABSTRACTLOGGER_H
2#define TEASE_LOGS_ABSTRACTLOGGER_H
3
4#include "transferease/transferease_global.h"
5
6#include <string>
7
8/*****************************/
9/* Macro definitions */
10/*****************************/
11
12/* Use to retrieve context informations */
13#define _TEASE_LOG_CTX_FILE static_cast<const char *>(TEASE_FILE)
14#define _TEASE_LOG_CTX_LINE TEASE_LINE
15#define _TEASE_LOG_CTX_FCT static_cast<const char *>(TEASE_FCTNAME)
16
17/* Create macros for easier log usage */
18#define _TEASE_LOG_GENERIC(level, msg) tease::LogManager::registerLog(level, _TEASE_LOG_CTX_FILE, _TEASE_LOG_CTX_LINE, _TEASE_LOG_CTX_FCT, msg)
19
20#define TEASE_LOG_FATAL(msg) _TEASE_LOG_GENERIC(tease::ILogger::LOG_LVL_FATAL, msg)
21#define TEASE_LOG_ERROR(msg) _TEASE_LOG_GENERIC(tease::ILogger::LOG_LVL_ERROR, msg)
22#define TEASE_LOG_WARN(msg) _TEASE_LOG_GENERIC(tease::ILogger::LOG_LVL_WARNING, msg)
23#define TEASE_LOG_INFO(msg) _TEASE_LOG_GENERIC(tease::ILogger::LOG_LVL_INFO, msg)
24#define TEASE_LOG_DEBUG(msg) _TEASE_LOG_GENERIC(tease::ILogger::LOG_LVL_DEBUG, msg)
25
26/*****************************/
27/* Start namespace */
28/*****************************/
29namespace tease{
30
31/*****************************/
32/* Class definitions */
33/* LogContext */
34/*****************************/
35class TEASE_EXPORT LogContext
36{
37 TEASE_DISABLE_COPY(LogContext)
38
39public:
40 constexpr LogContext(const char *filename, int lineNumber, const char *fctName) :
41 line(lineNumber), file(filename), function(fctName){};
42
43public:
44 int line = 0;
45 const char *file = nullptr;
46 const char *function = nullptr;
47};
48
49/*****************************/
50/* Class definitions */
51/* ILogger */
52/*****************************/
53class TEASE_EXPORT ILogger
54{
55public:
56 enum Level
57 {
58 LOG_LVL_FATAL = 0,
59 LOG_LVL_ERROR,
60 LOG_LVL_WARNING,
61 LOG_LVL_INFO,
62 LOG_LVL_DEBUG
63 };
64
65public:
66 virtual void log(Level level, const LogContext &context, const std::string &msg) = 0;
67};
68
69/*****************************/
70/* Class definitions */
71/* LogManager */
72/*****************************/
73class TEASE_EXPORT LogManager
74{
75public:
76 static void setLogger(ILogger *logger);
77
78public:
79 static void registerLog(ILogger::Level level, const char *filename, int lineNumber, const char *fctName, const std::string &msg);
80
81private:
82 static ILogger *m_refLogger;
83};
84
85} // namespace tease
86
87#endif // TEASE_LOGS_ABSTRACTLOGGER_H
Definition abstractlogger.h:54
Definition abstractlogger.h:36
Definition abstractlogger.h:74