1
Files
lecture-operating-system-de…/c_os/user/lib/Logger.h
2022-07-16 01:48:09 +02:00

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