language: C++ 4.7.2 (gcc-4.7.2)
date: 435 days 2 hours ago
link:
visibility: public
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
#include <sstream>
#include <string>
 
typedef int LogLevel;
 
bool isEnabled(LogLevel l){
  return true;
}
 
namespace logger{
  void log(LogLevel l, std::string const& msg){
    std::cout << "(Level: " << l << "): " << msg << "\n";
  }
}
 
#define DEBUG_LOG(Level, What) \
  isEnabled(Level) && scoped_logger(Level, __FILE__, __LINE__).stream() << What
 
struct scoped_logger
{
  scoped_logger(LogLevel level, char const* file, unsigned line)
    : _level(level)
  { _ss << file << "(" << line << ") [" << getpid() << "] : "; }
 
  std::stringstream& stream(){ return _ss; }
  ~scoped_logger(){ logger::log(_level, _ss.str()); }
private:
  std::stringstream _ss;
  LogLevel _level;
};
 
int main(){
  DEBUG_LOG(0, "Hello, " << "World!");
}