My Project
Loading...
Searching...
No Matches
src
logging
logging.hpp
1
#ifndef LOGGING_H
2
#define LOGGING_H
3
4
#ifdef ENABLE_LOGGING
5
6
#include <string>
7
9
10
// Levels as Numbers (in order of increasing severity)
11
#define INFO 0
12
#define WARN 1
13
#define ERROR 2
14
15
// Levels as Strings (in order of increasing severity)
16
#define INFO_STR "INFO"
17
#define WARN_STR "WARN"
18
#define ERROR_STR "ERROR"
19
25
#define GET_LEVEL(level) \
26
(level == ERROR ? ERROR_STR : (level == WARN ? WARN_STR : INFO_STR))
27
29
30
// LOG_INFO, LOG_WARN and LOG_ERROR
31
// should be used within the program
32
// (see command-line/parser.cpp for examples)
33
34
// Basically, the logging level only allows logs equal
35
// to its level and above (in severity) to be printed
36
#if LOGGING_LEVEL == INFO
37
#define LOG_INFO(msg) found::Log(INFO, msg)
38
#define LOG_WARN(msg) found::Log(WARN, msg)
39
#define LOG_ERROR(msg) found::Log(ERROR, msg)
40
#elif LOGGING_LEVEL == WARN
41
#define LOG_INFO(msg)
42
#define LOG_WARN(msg) found::Log(WARN, msg)
43
#define LOG_ERROR(msg) found::Log(ERROR, msg)
44
#else
45
#define LOG_INFO(msg)
46
#define LOG_WARN(msg)
47
#define LOG_ERROR(msg) found::Log(ERROR, msg)
48
#endif
49
50
namespace
found
{
51
53
54
// The output streams to where the logs go. You must
55
// place your definitions of each within each ifndef
56
// statement
57
#ifndef INFO_STREAM
58
#define INFO_STREAM std::cout
59
#endif
60
#ifndef WARN_STREAM
61
#define WARN_STREAM std::cerr
62
#endif
63
#ifndef ERROR_STREAM
64
#define ERROR_STREAM std::cerr
65
#endif
66
72
#define GET_STREAM(level) \
73
(level == ERROR ? ERROR_STREAM : (level == WARN ? WARN_STREAM : INFO_STREAM))
74
81
void
Log(
int
level,
const
std::string message);
82
83
}
// namespace found
84
85
#else
86
87
#define LOG_INFO(msg)
88
#define LOG_WARN(msg)
89
#define LOG_ERROR(msg)
90
91
#endif
92
93
#endif
// LOGGING_H
found
Definition
converters.hpp:10
Generated by
1.9.8