Transfer Ease
Loading...
Searching...
No Matches
include
transferease
logs
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
/*****************************/
29
namespace
tease{
30
31
/*****************************/
32
/* Class definitions */
33
/* LogContext */
34
/*****************************/
35
class
TEASE_EXPORT
LogContext
36
{
37
TEASE_DISABLE_COPY(
LogContext
)
38
39
public
:
40
constexpr
LogContext
(
const
char
*filename,
int
lineNumber,
const
char
*fctName) :
41
line(lineNumber), file(filename), function(fctName){};
42
43
public
:
44
int
line = 0;
45
const
char
*file =
nullptr
;
46
const
char
*function =
nullptr
;
47
};
48
49
/*****************************/
50
/* Class definitions */
51
/* ILogger */
52
/*****************************/
53
class
TEASE_EXPORT
ILogger
54
{
55
public
:
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
65
public
:
66
virtual
void
log(Level level,
const
LogContext
&context,
const
std::string &msg) = 0;
67
};
68
69
/*****************************/
70
/* Class definitions */
71
/* LogManager */
72
/*****************************/
73
class
TEASE_EXPORT
LogManager
74
{
75
public
:
76
static
void
setLogger(
ILogger
*logger);
77
78
public
:
79
static
void
registerLog(ILogger::Level level,
const
char
*filename,
int
lineNumber,
const
char
*fctName,
const
std::string &msg);
80
81
private
:
82
static
ILogger
*m_refLogger;
83
};
84
85
}
// namespace tease
86
87
#endif
// TEASE_LOGS_ABSTRACTLOGGER_H
tease::ILogger
Definition
abstractlogger.h:54
tease::LogContext
Definition
abstractlogger.h:36
tease::LogManager
Definition
abstractlogger.h:74
Generated by
1.12.0