56 lines
1.1 KiB
C++
56 lines
1.1 KiB
C++
#ifndef __Logger_Include_H_
|
|
#define __Logger_Include_H_
|
|
|
|
#include "devices/CGA.h"
|
|
#include "lib/Semaphore.h"
|
|
|
|
class Logger {
|
|
private:
|
|
Logger(const Logger& copy) = delete;
|
|
|
|
char* name;
|
|
static bool kout_enabled;
|
|
static bool serial_enabled;
|
|
|
|
// TODO: Don't mix logs
|
|
static const Semaphore sem;
|
|
|
|
void log(char* message, CGA::color col);
|
|
|
|
public:
|
|
Logger(char* name) : name(name) {}
|
|
|
|
enum LogLevel {
|
|
TRACE = 0,
|
|
DEBUG = 1,
|
|
ERROR = 2,
|
|
INFO = 3
|
|
};
|
|
static LogLevel level;
|
|
|
|
void trace(char* message);
|
|
void debug(char* message);
|
|
void error(char* message);
|
|
void info(char* message);
|
|
|
|
// TODO: Make level change accessible over menu
|
|
static void set_level(LogLevel level) {
|
|
Logger::level = level;
|
|
}
|
|
|
|
static void enable_kout() {
|
|
Logger::kout_enabled = true;
|
|
}
|
|
static void disable_kout() {
|
|
Logger::kout_enabled = false;
|
|
}
|
|
static void enable_serial() {
|
|
Logger::serial_enabled = true;
|
|
}
|
|
static void disable_serial() {
|
|
Logger::serial_enabled = false;
|
|
}
|
|
};
|
|
|
|
#endif
|