diff options
Diffstat (limited to 'src/common/logging')
| -rw-r--r-- | src/common/logging/backend.cpp | 19 | 
1 files changed, 11 insertions, 8 deletions
| diff --git a/src/common/logging/backend.cpp b/src/common/logging/backend.cpp index b6fa4affb..61dddab3f 100644 --- a/src/common/logging/backend.cpp +++ b/src/common/logging/backend.cpp @@ -171,19 +171,22 @@ FileBackend::FileBackend(const std::filesystem::path& filename) {  FileBackend::~FileBackend() = default;  void FileBackend::Write(const Entry& entry) { +    if (!file->IsOpen()) { +        return; +    } +      using namespace Common::Literals; -    // prevent logs from going over the maximum size (in case its spamming and the user doesn't -    // know) +    // Prevent logs from exceeding a set maximum size in the event that log entries are spammed.      constexpr std::size_t MAX_BYTES_WRITTEN = 100_MiB;      constexpr std::size_t MAX_BYTES_WRITTEN_EXTENDED = 1_GiB; -    if (!file->IsOpen()) { -        return; -    } +    const bool write_limit_exceeded = +        bytes_written > MAX_BYTES_WRITTEN_EXTENDED || +        (bytes_written > MAX_BYTES_WRITTEN && !Settings::values.extended_logging); -    if (Settings::values.extended_logging && bytes_written > MAX_BYTES_WRITTEN_EXTENDED) { -        return; -    } else if (!Settings::values.extended_logging && bytes_written > MAX_BYTES_WRITTEN) { +    // Close the file after the write limit is exceeded. +    if (write_limit_exceeded) { +        file->Close();          return;      } | 
