FOUND
Loading...
Searching...
No Matches
logging.hpp
Go to the documentation of this file.
1
#ifndef LOGGING_H
2
#define LOGGING_H
3
5
6
// Levels as Numbers (in order of increasing severity)
7
#define INFO 0
8
#define WARN 1
9
#define ERROR 2
10
11
#ifdef ENABLE_LOGGING
12
13
#include <iostream>
14
#include <iomanip>
15
#include <string>
16
#include <fstream>
17
18
// Levels as Strings (in order of increasing severity)
19
#define INFO_STR "INFO"
20
#define WARN_STR "WARN"
21
#define ERROR_STR "ERROR"
22
28
#define GET_LEVEL(level) \
29
(level == ERROR ? ERROR_STR : (level == WARN ? WARN_STR : INFO_STR))
30
32
33
// LOG_INFO, LOG_WARN and LOG_ERROR
34
// should be used within the program
35
// (see command-line/parser.cpp for examples)
36
37
// Basically, the logging level only allows logs equal
38
// to its level and above (in severity) to be printed
39
#if LOGGING_LEVEL == INFO
40
#define LOG_INFO(msg) LOG(INFO, msg)
41
#define LOG_WARN(msg) LOG(WARN, msg)
42
#define LOG_ERROR(msg) LOG(ERROR, msg)
43
#elif LOGGING_LEVEL == WARN
44
#define LOG_INFO(msg)
45
#define LOG_WARN(msg) LOG(WARN, msg)
46
#define LOG_ERROR(msg) LOG(ERROR, msg)
47
#else
48
#define LOG_INFO(msg)
49
#define LOG_WARN(msg)
50
#define LOG_ERROR(msg) LOG(ERROR, msg)
51
#endif
52
53
namespace
found
{
54
56
57
// The output streams to where the logs go. To override
58
// the default streams as shown below, you must define
59
// them yourselve above. For instance:
60
//
61
// // Define the streams as external variable in this file
62
// extern std::ofstream log_file;
63
// extern std::ofstream err_file;
64
//
65
// // Then, in logging.cpp (does not exist right now)
66
// // Define extern log files, opening in append mode
67
// std::ofstream log_file("path/to/logs/found.log", std::ios::app);
68
// std::ofstream err_file("path/to/logs/error.log", std::ios::app);
69
//
70
// #define INFO_STREAM log_file
71
// #define WARN_STREAM log_file
72
// #define ERROR_STREAM err_file
73
//
74
#ifndef INFO_STREAM
75
#define INFO_STREAM std::cout
76
#endif
77
#ifndef WARN_STREAM
78
#define WARN_STREAM std::cerr
79
#endif
80
#ifndef ERROR_STREAM
81
#define ERROR_STREAM std::cerr
82
#endif
83
89
#define GET_STREAM(level) \
90
(level == ERROR ? ERROR_STREAM : (level == WARN ? WARN_STREAM : INFO_STREAM))
91
98
#define LOG(level, message) { \
99
/* Determine Logging Level */
\
100
const std::string level_string = GET_LEVEL(level); \
101
/* Determine UTC Time */
\
102
std::time_t now = std::time(nullptr); \
103
/* Convert to local time */
\
104
std::tm *local_time = std::localtime(&now); \
105
/* Print out everything */
\
106
GET_STREAM(level) << \
107
"[" << level_string << " " << std::put_time(local_time, "%Y-%m-%d %H:%M:%S %Z") << "] " << \
108
message << std::endl; \
109
}
110
111
}
// namespace found
112
113
#else
114
115
#define LOG_INFO(msg)
116
#define LOG_WARN(msg)
117
#define LOG_ERROR(msg)
118
119
#endif
120
121
#endif
// LOGGING_H
found
Definition
calibrate.cpp:7
src
common
logging.hpp
Generated by
1.9.8