mirror of
https://github.com/glest/glest-source.git
synced 2025-08-15 12:54:01 +02:00
- changes to threaded logging so when things get very busy the thread dumps log entries more quickly
This commit is contained in:
@@ -100,7 +100,7 @@ protected:
|
|||||||
vector<LogFileEntry> logList;
|
vector<LogFileEntry> logList;
|
||||||
time_t lastSaveToDisk;
|
time_t lastSaveToDisk;
|
||||||
|
|
||||||
void saveToDisk();
|
void saveToDisk(bool forceSaveAll);
|
||||||
bool checkSaveCurrentLogBufferToDisk();
|
bool checkSaveCurrentLogBufferToDisk();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@@ -13,7 +13,10 @@
|
|||||||
#include "simple_threads.h"
|
#include "simple_threads.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "platform_common.h"
|
#include "platform_common.h"
|
||||||
|
#include <algorithm>
|
||||||
|
#include "leak_dumper.h"
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
using namespace Shared::Util;
|
using namespace Shared::Util;
|
||||||
using namespace Shared::PlatformCommon;
|
using namespace Shared::PlatformCommon;
|
||||||
|
|
||||||
@@ -208,7 +211,7 @@ void LogFileThread::addLogEntry(SystemFlags::DebugType type, string logEntry) {
|
|||||||
bool LogFileThread::checkSaveCurrentLogBufferToDisk() {
|
bool LogFileThread::checkSaveCurrentLogBufferToDisk() {
|
||||||
bool ret = false;
|
bool ret = false;
|
||||||
if(difftime(time(NULL),lastSaveToDisk) >= 5 ||
|
if(difftime(time(NULL),lastSaveToDisk) >= 5 ||
|
||||||
LogFileThread::getLogEntryBufferCount() >= 35000) {
|
LogFileThread::getLogEntryBufferCount() >= 100000) {
|
||||||
lastSaveToDisk = time(NULL);
|
lastSaveToDisk = time(NULL);
|
||||||
ret = true;
|
ret = true;
|
||||||
}
|
}
|
||||||
@@ -228,15 +231,15 @@ void LogFileThread::execute() {
|
|||||||
try {
|
try {
|
||||||
for(;this->getQuitStatus() == false;) {
|
for(;this->getQuitStatus() == false;) {
|
||||||
if(checkSaveCurrentLogBufferToDisk() == true) {
|
if(checkSaveCurrentLogBufferToDisk() == true) {
|
||||||
saveToDisk();
|
saveToDisk(false);
|
||||||
}
|
}
|
||||||
if(this->getQuitStatus() == false) {
|
if(this->getQuitStatus() == false) {
|
||||||
sleep(100);
|
sleep(50);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure remaining entryies are logged to disk on shutdown
|
// Ensure remaining entryies are logged to disk on shutdown
|
||||||
saveToDisk();
|
saveToDisk(true);
|
||||||
}
|
}
|
||||||
catch(const exception &ex) {
|
catch(const exception &ex) {
|
||||||
//SystemFlags::OutputDebug(SystemFlags::debugError,"In [%s::%s Line: %d] Error [%s]\n",__FILE__,__FUNCTION__,__LINE__,ex.what());
|
//SystemFlags::OutputDebug(SystemFlags::debugError,"In [%s::%s Line: %d] Error [%s]\n",__FILE__,__FUNCTION__,__LINE__,ex.what());
|
||||||
@@ -260,7 +263,7 @@ std::size_t LogFileThread::getLogEntryBufferCount() {
|
|||||||
return logCount;
|
return logCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LogFileThread::saveToDisk() {
|
void LogFileThread::saveToDisk(bool forceSaveAll) {
|
||||||
MutexSafeWrapper safeMutex(&mutexLogList);
|
MutexSafeWrapper safeMutex(&mutexLogList);
|
||||||
std::size_t logCount = logList.size();
|
std::size_t logCount = logList.size();
|
||||||
if(logCount > 0) {
|
if(logCount > 0) {
|
||||||
@@ -268,6 +271,10 @@ void LogFileThread::saveToDisk() {
|
|||||||
safeMutex.ReleaseLock(true);
|
safeMutex.ReleaseLock(true);
|
||||||
|
|
||||||
logCount = tempLogList.size();
|
logCount = tempLogList.size();
|
||||||
|
if(forceSaveAll == false) {
|
||||||
|
logCount = min(logCount,(std::size_t)250000);
|
||||||
|
}
|
||||||
|
|
||||||
for(int i = 0; i < logCount; ++i) {
|
for(int i = 0; i < logCount; ++i) {
|
||||||
LogFileEntry &entry = tempLogList[i];
|
LogFileEntry &entry = tempLogList[i];
|
||||||
SystemFlags::logDebugEntry(entry.type, entry.entry, entry.entryDateTime);
|
SystemFlags::logDebugEntry(entry.type, entry.entry, entry.entryDateTime);
|
||||||
|
Reference in New Issue
Block a user