diff options
| author | 2022-08-23 23:18:55 +0100 | |
|---|---|---|
| committer | 2022-08-23 23:18:55 +0100 | |
| commit | a5c2a94bd8d6b2e7ea5fc531a109e5ea3e81a287 (patch) | |
| tree | f138145b2047cd910b90c3dee83577fa0990b463 /src/logging.cpp | |
| parent | Refactor the core event macros. (diff) | |
Fix cached log messages not having the correct timestamp.
Diffstat (limited to 'src/logging.cpp')
| -rw-r--r-- | src/logging.cpp | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/logging.cpp b/src/logging.cpp index 85c18fde7..279584577 100644 --- a/src/logging.cpp +++ b/src/logging.cpp @@ -60,13 +60,13 @@ Log::FileMethod::~FileMethod() fclose(file); } -void Log::FileMethod::OnLog(Level level, const std::string& type, const std::string& message) +void Log::FileMethod::OnLog(time_t time, Level level, const std::string& type, const std::string& message) { static time_t prevtime = 0; static std::string timestr; - if (prevtime != ServerInstance->Time()) + if (prevtime != time) { - prevtime = ServerInstance->Time(); + prevtime = time; timestr = InspIRCd::TimeString(prevtime); } @@ -139,8 +139,9 @@ Log::MethodPtr Log::StreamEngine::Create(std::shared_ptr<ConfigTag> tag) return std::make_shared<FileMethod>(name, file, 1, false); } -Log::Manager::CachedMessage::CachedMessage(Level l, const std::string& t, const std::string& m) - : level(l) +Log::Manager::CachedMessage::CachedMessage(time_t ts, Level l, const std::string& t, const std::string& m) + : time(ts) + , level(l) , type(t) , message(m) { @@ -234,7 +235,7 @@ void Log::Manager::OpenLogs(bool requiremethods) for (const auto& message : cache) { if (logger.level >= message.level && logger.types.Contains(message.type)) - logger.method->OnLog(message.level, message.type, message.message); + logger.method->OnLog(message.time, message.level, message.type, message.message); } } @@ -266,14 +267,15 @@ void Log::Manager::Write(Level level, const std::string& type, const std::string return; // Avoid log loops. logging = true; + time_t time = ServerInstance->Time(); for (const auto& logger : loggers) { if (logger.level >= level && logger.types.Contains(type)) - logger.method->OnLog(level, type, message); + logger.method->OnLog(time, level, type, message); } if (caching) - cache.emplace_back(level, type, message); + cache.emplace_back(time, level, type, message); logging = false; } |
