mirror of
https://github.com/OpenMW/openmw.git
synced 2025-03-27 12:40:25 +00:00
Limit log buffer size
This commit is contained in:
parent
c83acac32c
commit
98a8dcbdbf
1 changed files with 13 additions and 6 deletions
|
@ -1,6 +1,7 @@
|
||||||
#include "debugging.hpp"
|
#include "debugging.hpp"
|
||||||
|
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
|
#include <deque>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
@ -199,7 +200,7 @@ namespace Debug
|
||||||
Level mLevel;
|
Level mLevel;
|
||||||
};
|
};
|
||||||
|
|
||||||
std::vector<Record> globalBuffer;
|
std::deque<Record> globalBuffer;
|
||||||
|
|
||||||
Color getColor(Level level)
|
Color getColor(Level level)
|
||||||
{
|
{
|
||||||
|
@ -284,18 +285,22 @@ namespace Debug
|
||||||
class Buffer
|
class Buffer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit Buffer(std::vector<Record>& buffer)
|
explicit Buffer(std::size_t capacity, std::deque<Record>& buffer)
|
||||||
: mBuffer(buffer)
|
: mCapacity(capacity)
|
||||||
|
, mBuffer(buffer)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void write(const char* str, std::streamsize size, Level debugLevel)
|
void write(const char* str, std::streamsize size, Level debugLevel)
|
||||||
{
|
{
|
||||||
|
while (mBuffer.size() >= mCapacity)
|
||||||
|
mBuffer.pop_front();
|
||||||
mBuffer.push_back(Record{ std::string(str, size), debugLevel });
|
mBuffer.push_back(Record{ std::string(str, size), debugLevel });
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<Record>& mBuffer;
|
std::size_t mCapacity;
|
||||||
|
std::deque<Record>& mBuffer;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <class First, class Second>
|
template <class First, class Second>
|
||||||
|
@ -417,8 +422,10 @@ namespace Debug
|
||||||
std::cout.rdbuf(&sb);
|
std::cout.rdbuf(&sb);
|
||||||
std::cerr.rdbuf(&sb);
|
std::cerr.rdbuf(&sb);
|
||||||
#else
|
#else
|
||||||
bufferedOut.open(Tee(Buffer(globalBuffer), Coloured(*rawStdout)));
|
constexpr std::size_t bufferCapacity = 1024;
|
||||||
bufferedErr.open(Tee(Buffer(globalBuffer), Coloured(*rawStderr)));
|
|
||||||
|
bufferedOut.open(Tee(Buffer(bufferCapacity, globalBuffer), Coloured(*rawStdout)));
|
||||||
|
bufferedErr.open(Tee(Buffer(bufferCapacity, globalBuffer), Coloured(*rawStderr)));
|
||||||
|
|
||||||
std::cout.rdbuf(&bufferedOut);
|
std::cout.rdbuf(&bufferedOut);
|
||||||
std::cerr.rdbuf(&bufferedErr);
|
std::cerr.rdbuf(&bufferedErr);
|
||||||
|
|
Loading…
Reference in a new issue