limit weblog buffer on low heap, use deque

This commit is contained in:
MichaelDvP
2022-11-17 16:18:12 +01:00
parent ae4070b7f2
commit 6e92d31f5d
2 changed files with 11 additions and 7 deletions

View File

@@ -110,6 +110,10 @@ WebLogService::QueuedLogMessage::QueuedLogMessage(unsigned long id, std::shared_
} }
void WebLogService::operator<<(std::shared_ptr<uuid::log::Message> message) { void WebLogService::operator<<(std::shared_ptr<uuid::log::Message> message) {
if (ESP.getMaxAllocHeap() < 20480) {
maximum_log_messages(maximum_log_messages_ > 25 ? maximum_log_messages_ - 25 : 10);
// EMSESP::logger().warning("Low memory: WebLog buffer reduced to %d entries", maximum_log_messages_);
}
if (log_messages_.size() >= maximum_log_messages_) { if (log_messages_.size() >= maximum_log_messages_) {
log_messages_.pop_front(); log_messages_.pop_front();
} }

View File

@@ -72,7 +72,7 @@ class WebLogService : public uuid::log::Handler {
size_t maximum_log_messages_ = MAX_LOG_MESSAGES; // Maximum number of log messages to buffer before they are output size_t maximum_log_messages_ = MAX_LOG_MESSAGES; // Maximum number of log messages to buffer before they are output
unsigned long log_message_id_ = 0; // The next identifier to use for queued log messages unsigned long log_message_id_ = 0; // The next identifier to use for queued log messages
unsigned long log_message_id_tail_ = 0; // last event shown on the screen after fetch unsigned long log_message_id_tail_ = 0; // last event shown on the screen after fetch
std::list<QueuedLogMessage> log_messages_; // Queued log messages, in the order they were received std::deque<QueuedLogMessage> log_messages_; // Queued log messages, in the order they were received
time_t time_offset_ = 0; time_t time_offset_ = 0;
bool compact_ = true; bool compact_ = true;
}; };