mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-25 00:20:16 +00:00
Optimize logging overhead and character animation threading
This commit is contained in:
parent
9d647e5622
commit
85c8b5d5f4
5 changed files with 73 additions and 14 deletions
|
|
@ -3,6 +3,7 @@
|
|||
#include <iomanip>
|
||||
#include <ctime>
|
||||
#include <filesystem>
|
||||
#include <cstdlib>
|
||||
|
||||
namespace wowee {
|
||||
namespace core {
|
||||
|
|
@ -15,9 +16,17 @@ Logger& Logger::getInstance() {
|
|||
void Logger::ensureFile() {
|
||||
if (fileReady) return;
|
||||
fileReady = true;
|
||||
if (const char* flushMs = std::getenv("WOWEE_LOG_FLUSH_MS")) {
|
||||
char* end = nullptr;
|
||||
unsigned long parsed = std::strtoul(flushMs, &end, 10);
|
||||
if (end != flushMs && parsed <= 10000ul) {
|
||||
flushIntervalMs_ = static_cast<uint32_t>(parsed);
|
||||
}
|
||||
}
|
||||
std::error_code ec;
|
||||
std::filesystem::create_directories("logs", ec);
|
||||
fileStream.open("logs/wowee.log", std::ios::out | std::ios::trunc);
|
||||
lastFlushTime_ = std::chrono::steady_clock::now();
|
||||
}
|
||||
|
||||
void Logger::log(LogLevel level, const std::string& message) {
|
||||
|
|
@ -61,7 +70,18 @@ void Logger::log(LogLevel level, const std::string& message) {
|
|||
std::cout << line.str() << '\n';
|
||||
if (fileStream.is_open()) {
|
||||
fileStream << line.str() << '\n';
|
||||
fileStream.flush();
|
||||
bool shouldFlush = (level >= LogLevel::WARNING);
|
||||
if (!shouldFlush) {
|
||||
auto nowSteady = std::chrono::steady_clock::now();
|
||||
auto elapsedMs = std::chrono::duration_cast<std::chrono::milliseconds>(nowSteady - lastFlushTime_).count();
|
||||
shouldFlush = (elapsedMs >= static_cast<long long>(flushIntervalMs_));
|
||||
if (shouldFlush) {
|
||||
lastFlushTime_ = nowSteady;
|
||||
}
|
||||
}
|
||||
if (shouldFlush) {
|
||||
fileStream.flush();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue