VERB4D
Logger.h
Go to the documentation of this file.
1 
6 #pragma once
7 
8 #include <iostream>
9 #include <streambuf>
10 #include <fstream>
11 #include <sstream>
12 #include <stdio.h>
13 #include <assert.h>
14 using namespace std;
15 
19 class Logger
20 {
21 public:
22 
23 
28  {
29  DEBUG_LEVEL_DISABLED = 0,
30  DEBUG_LEVEL_MESSAGE = 1,
31  DEBUG_LEVEL_WARNING = 2,
32  DEBUG_LEVEL_ERROR = 3,
33  };
34 
39  {
40  MESSAGE_INFO = 1,
41  MESSAGE_WARNING = 2,
42  MESSAGE_ERROR = 3,
43  };
44 
45  static void createInstance();
46  static void deleteInstance();
47  static void setDebugLevel(DebugLevel level);
48 
49 
53  class Streamer : public std::ostream {
54  public:
55  Streamer(Logger::MessageType messageType);
56  ~Streamer();
57 
58  private:
62  class StringBuffer : public std::stringbuf {
63  public:
64  StringBuffer(Logger::MessageType messageType);
65  ~StringBuffer();
66  virtual int sync();
67 
68  private:
69  Logger::MessageType mMessageType;
70  };
71  };
72 
73  static Streamer message;
74  static Streamer warning;
75  static Streamer error;
76 
77 
78 
79  protected:
81  Logger() {};
83  Logger(const Logger& thisobject);
85  Logger& operator=(const Logger&);
87  ~Logger() {};
88 
90  void writeIDEDebugString(const std::string& message, MessageType type);
91 
92 
93 
94  private:
96  void writeMessage(const std::string& message);
97  void writeWarning(const std::string& message);
98  void writeError(const std::string& message);
99 
100  void appendToFile(const std::string& message);
101 
102  void writeMessage(const std::string& message, MessageType type);
103 
104  static DebugLevel mDebugLevel;
105  static Logger* sInstance; // ??
106  static ofstream logFile;
107  };
108 
109 
110 
111 
112  //Logger& operator<< (std::ostream& (*pfun)(std::ostream&));
113  /*Logger& operator<<(const char* sb);
114  friend Logger operator<<(Logger &log, int i);*/
115 
116  //template <typename ANY>
117  //friend Logger& operator<<(Logger& logClass, ANY val);
118 
119 
120  /*friend Logger& operator<<(Logger &log, int i);
121  friend Logger& operator<<(Logger &log, long i);
122  friend Logger& operator<<(Logger &log, float i);
123  friend Logger& operator<<(Logger &log, double i);
124  friend Logger& operator<<(Logger &log, const char* sb);
125  friend Logger& operator<<(Logger &log, string sb);
126 
127  template <class T>
128  friend Logger& operator<<(Logger &log, T i);
129  Logger& operator << (std::ostream& (*pfun)(std::ostream&));*/
130 //};
131 
~Logger()
default destructor
Definition: Logger.h:87
Stores messages about statuses, warning, and errors when computing/solving the matrices.
Definition: Logger.h:19
Turns messages from the logger into streams.
Definition: Logger.h:53
MessageType
Definition: Logger.h:38
Logger()
defualt constructor
Definition: Logger.h:81
DebugLevel
Definition: Logger.h:27