feat(logging): basic logger implementation
This commit is contained in:
parent
1fb2a793cf
commit
e8b9054134
4 changed files with 56 additions and 1 deletions
2
.clangd
Normal file
2
.clangd
Normal file
|
@ -0,0 +1,2 @@
|
|||
CompileFlags:
|
||||
Add: [-std=c++20]
|
|
@ -16,3 +16,8 @@ add_library(openblocks STATIC ${SOURCES})
|
|||
set_target_properties(openblocks PROPERTIES OUTPUT_NAME "openblocks")
|
||||
target_link_libraries(openblocks ${GLEW_LIBRARIES} OpenGL::GL ReactPhysics3D::ReactPhysics3D pugixml::pugixml)
|
||||
target_include_directories(openblocks PUBLIC "src" "../include")
|
||||
|
||||
# Windows-specific dependencies
|
||||
if(WIN32)
|
||||
target_link_libraries(openblocks shell32.lib)
|
||||
endif()
|
25
core/src/logger.cpp
Normal file
25
core/src/logger.cpp
Normal file
|
@ -0,0 +1,25 @@
|
|||
#include "logger.h"
|
||||
#include "platform.h"
|
||||
|
||||
#include <fstream>
|
||||
#include <chrono>
|
||||
#include <format>
|
||||
|
||||
static std::ofstream logStream;
|
||||
|
||||
void Logger::init() {
|
||||
initProgramLogsDir();
|
||||
|
||||
const auto now = std::chrono::system_clock::now();
|
||||
|
||||
std::string fileName = std::format("log_{0:%Y%m%d}_{0:%H%M%S}.txt", now);
|
||||
|
||||
logStream = std::ofstream(getProgramLogsDir() + "/" + fileName);
|
||||
Logger::debug("Logger initialized");
|
||||
}
|
||||
|
||||
void Logger::finish() {
|
||||
Logger::debug("Closing logger...");
|
||||
logStream.close();
|
||||
}
|
||||
|
23
core/src/logger.h
Normal file
23
core/src/logger.h
Normal file
|
@ -0,0 +1,23 @@
|
|||
#pragma once
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace Logger {
|
||||
enum class LogLevel {
|
||||
INFO,
|
||||
DEBUG,
|
||||
WARNING,
|
||||
ERROR,
|
||||
FATAL_ERROR,
|
||||
};
|
||||
|
||||
void init();
|
||||
void finish();
|
||||
|
||||
void log(std::string message, LogLevel logLevel);
|
||||
inline void info(std::string message) { log(message, LogLevel::INFO); }
|
||||
inline void debug(std::string message) { log(message, LogLevel::DEBUG); }
|
||||
inline void warning(std::string message) { log(message, LogLevel::WARNING); }
|
||||
inline void error(std::string message) { log(message, LogLevel::ERROR); }
|
||||
inline void fatalError(std::string message) { log(message, LogLevel::FATAL_ERROR); }
|
||||
};
|
Loading…
Add table
Reference in a new issue