mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-04-17 17:43:52 +00:00
Add ZLIB linking and file logging support
- Add ZLIB find_package and linking for addon compression - Add file logging to logs/wowee.log
This commit is contained in:
parent
82a44659b4
commit
9c8b202595
3 changed files with 33 additions and 10 deletions
|
|
@ -21,6 +21,7 @@ find_package(GLEW REQUIRED)
|
||||||
find_package(OpenSSL REQUIRED)
|
find_package(OpenSSL REQUIRED)
|
||||||
find_package(Threads REQUIRED)
|
find_package(Threads REQUIRED)
|
||||||
find_package(SQLite3 REQUIRED)
|
find_package(SQLite3 REQUIRED)
|
||||||
|
find_package(ZLIB REQUIRED)
|
||||||
find_package(PkgConfig REQUIRED)
|
find_package(PkgConfig REQUIRED)
|
||||||
pkg_check_modules(FFMPEG REQUIRED libavformat libavcodec libswscale libavutil)
|
pkg_check_modules(FFMPEG REQUIRED libavformat libavcodec libswscale libavutil)
|
||||||
|
|
||||||
|
|
@ -260,6 +261,7 @@ target_link_libraries(wowee PRIVATE
|
||||||
OpenSSL::SSL
|
OpenSSL::SSL
|
||||||
OpenSSL::Crypto
|
OpenSSL::Crypto
|
||||||
Threads::Threads
|
Threads::Threads
|
||||||
|
ZLIB::ZLIB
|
||||||
)
|
)
|
||||||
|
|
||||||
# SQLite
|
# SQLite
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
|
#include <fstream>
|
||||||
|
|
||||||
namespace wowee {
|
namespace wowee {
|
||||||
namespace core {
|
namespace core {
|
||||||
|
|
@ -63,6 +64,9 @@ private:
|
||||||
|
|
||||||
LogLevel minLevel = LogLevel::DEBUG;
|
LogLevel minLevel = LogLevel::DEBUG;
|
||||||
std::mutex mutex;
|
std::mutex mutex;
|
||||||
|
std::ofstream fileStream;
|
||||||
|
bool fileReady = false;
|
||||||
|
void ensureFile();
|
||||||
};
|
};
|
||||||
|
|
||||||
// Convenience macros
|
// Convenience macros
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
|
#include <filesystem>
|
||||||
|
|
||||||
namespace wowee {
|
namespace wowee {
|
||||||
namespace core {
|
namespace core {
|
||||||
|
|
@ -11,12 +12,21 @@ Logger& Logger::getInstance() {
|
||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Logger::ensureFile() {
|
||||||
|
if (fileReady) return;
|
||||||
|
fileReady = true;
|
||||||
|
std::error_code ec;
|
||||||
|
std::filesystem::create_directories("logs", ec);
|
||||||
|
fileStream.open("logs/wowee.log", std::ios::out | std::ios::app);
|
||||||
|
}
|
||||||
|
|
||||||
void Logger::log(LogLevel level, const std::string& message) {
|
void Logger::log(LogLevel level, const std::string& message) {
|
||||||
if (level < minLevel) {
|
if (level < minLevel) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::lock_guard<std::mutex> lock(mutex);
|
std::lock_guard<std::mutex> lock(mutex);
|
||||||
|
ensureFile();
|
||||||
|
|
||||||
// Get current time
|
// Get current time
|
||||||
auto now = std::chrono::system_clock::now();
|
auto now = std::chrono::system_clock::now();
|
||||||
|
|
@ -28,20 +38,27 @@ void Logger::log(LogLevel level, const std::string& message) {
|
||||||
localtime_r(&time, &tm);
|
localtime_r(&time, &tm);
|
||||||
|
|
||||||
// Format: [YYYY-MM-DD HH:MM:SS.mmm] [LEVEL] message
|
// Format: [YYYY-MM-DD HH:MM:SS.mmm] [LEVEL] message
|
||||||
std::cout << "["
|
std::ostringstream line;
|
||||||
<< std::put_time(&tm, "%Y-%m-%d %H:%M:%S")
|
line << "["
|
||||||
<< "." << std::setfill('0') << std::setw(3) << ms.count()
|
<< std::put_time(&tm, "%Y-%m-%d %H:%M:%S")
|
||||||
<< "] [";
|
<< "." << std::setfill('0') << std::setw(3) << ms.count()
|
||||||
|
<< "] [";
|
||||||
|
|
||||||
switch (level) {
|
switch (level) {
|
||||||
case LogLevel::DEBUG: std::cout << "DEBUG"; break;
|
case LogLevel::DEBUG: line << "DEBUG"; break;
|
||||||
case LogLevel::INFO: std::cout << "INFO "; break;
|
case LogLevel::INFO: line << "INFO "; break;
|
||||||
case LogLevel::WARNING: std::cout << "WARN "; break;
|
case LogLevel::WARNING: line << "WARN "; break;
|
||||||
case LogLevel::ERROR: std::cout << "ERROR"; break;
|
case LogLevel::ERROR: line << "ERROR"; break;
|
||||||
case LogLevel::FATAL: std::cout << "FATAL"; break;
|
case LogLevel::FATAL: line << "FATAL"; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::cout << "] " << message << std::endl;
|
line << "] " << message;
|
||||||
|
|
||||||
|
std::cout << line.str() << std::endl;
|
||||||
|
if (fileStream.is_open()) {
|
||||||
|
fileStream << line.str() << std::endl;
|
||||||
|
fileStream.flush();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Logger::setLogLevel(LogLevel level) {
|
void Logger::setLogLevel(LogLevel level) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue