68 lines
1.5 KiB
C++
68 lines
1.5 KiB
C++
#ifndef LOGGER_HPP
|
|
#define LOGGER_HPP
|
|
#include <string>
|
|
#include <fstream>
|
|
|
|
#define CC(COLOR) CC_##COLOR
|
|
#define CC_RESET "\033[0m"
|
|
#define CC_BLACK "\e[0;30m"
|
|
#define CC_RED "\e[0;31m"
|
|
#define CC_GREEN "\e[0;32m"
|
|
#define CC_YELLOW "\e[0;33m"
|
|
#define CC_BLUE "\e[0;34m"
|
|
#define CC_PURPLE "\e[0;35m"
|
|
#define CC_CYAN "\e[0;36m"
|
|
#define CC_WHITE "\e[0;37m"
|
|
|
|
|
|
namespace Plains {
|
|
namespace Core {
|
|
|
|
using std::string;
|
|
using std::ofstream;
|
|
//using std::ostream;
|
|
//using std::streambuf;
|
|
|
|
class Logger {
|
|
public:
|
|
enum Level { DEBUG, INFO, WARN, FATAL };
|
|
Logger(Level logLevel);
|
|
~Logger();
|
|
void setLogLevel(Level level);
|
|
void log(Level lvl, const char* msg);
|
|
void log(Level lvl, const string& msg);
|
|
static const char commit = 0;
|
|
|
|
class Sink {
|
|
private:
|
|
bool _lineIsPrefixed;
|
|
Logger& _parent;
|
|
const Logger::Level _level;
|
|
const char* _colorCode;
|
|
void prefixLine(bool resetToFalse = false);
|
|
public:
|
|
Sink(const Level level, Logger& parent);
|
|
void ln (const string& msg);
|
|
void ln (const char* msg);
|
|
Sink& operator<<(const char character);
|
|
Sink& operator<<(const string& msg);
|
|
Sink& operator<<(const char* msg);
|
|
Sink& operator<<(const int msg);
|
|
Sink& operator<<(const long msg);
|
|
Sink& operator<<(const unsigned long msg);
|
|
};
|
|
|
|
Sink debug, info, warn, fatal;
|
|
|
|
private:
|
|
enum Level _logLevel;
|
|
ofstream* _output;
|
|
static string genTimeStamp();
|
|
};
|
|
|
|
|
|
|
|
|
|
}}
|
|
#endif
|