wbc
src
tools
Logger.hpp
Go to the documentation of this file.
1
#ifndef WBC_TOOLS_LOGGER_HPP
2
#define WBC_TOOLS_LOGGER_HPP
3
4
#include <iostream>
5
#include <sstream>
6
7
/* consider adding boost thread id since we'll want to know whose writting and
8
* won't want to repeat it for every single call */
9
10
/* consider adding policy class to allow users to redirect logging to specific
11
* files via the command line
12
*/
13
14
enum
loglevel_e
15
{
logERROR
,
logWARNING
,
logINFO
,
logDEBUG
,
logDEBUG1
,
logDEBUG2
,
logDEBUG3
,
logDEBUG4
};
16
17
class
logger
18
{
19
public
:
20
logger
(
loglevel_e
_loglevel =
logERROR
) {
21
_buffer << _loglevel <<
" :"
22
<< std::string(
23
_loglevel >
logDEBUG
24
? (_loglevel -
logDEBUG
) * 4
25
: 1
26
,
' '
);
27
}
28
29
template
<
typename
T>
30
logger
&
operator<<
(T
const
& value)
31
{
32
_buffer << value;
33
return
*
this
;
34
}
35
36
~logger
()
37
{
38
_buffer << std::endl;
39
// This is atomic according to the POSIX standard
40
// http://www.gnu.org/s/libc/manual/html_node/Streams-and-Threads.html
41
std::cerr << _buffer.str();
42
}
43
44
private
:
45
std::ostringstream _buffer;
46
};
47
48
extern
loglevel_e
loglevel
;
49
50
#define log(level) \
51
if (level > loglevel) ; \
52
else logger(level)
53
54
#endif
// WBC_TOOLS_LOGGER_HPP
loglevel_e
loglevel_e
Definition
Logger.hpp:15
logDEBUG1
@ logDEBUG1
Definition
Logger.hpp:15
logDEBUG
@ logDEBUG
Definition
Logger.hpp:15
logDEBUG4
@ logDEBUG4
Definition
Logger.hpp:15
logWARNING
@ logWARNING
Definition
Logger.hpp:15
logINFO
@ logINFO
Definition
Logger.hpp:15
logDEBUG2
@ logDEBUG2
Definition
Logger.hpp:15
logDEBUG3
@ logDEBUG3
Definition
Logger.hpp:15
logERROR
@ logERROR
Definition
Logger.hpp:15
loglevel
loglevel_e loglevel
Definition
Scene.cpp:5
logger::operator<<
logger & operator<<(T const &value)
Definition
Logger.hpp:30
logger::logger
logger(loglevel_e _loglevel=logERROR)
Definition
Logger.hpp:20
logger::~logger
~logger()
Definition
Logger.hpp:36
Generated by
1.13.2