utility: ringlogging
ringlogging default_logs_per_file: 1000 default_log_files:2
This commit is contained in:
@@ -2,15 +2,20 @@
|
||||
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
#include <cstdio>
|
||||
|
||||
#include "utility/file/FileSystem.h"
|
||||
|
||||
std::string FileLogger::s_filePath = "data/log/";
|
||||
unsigned int FileLogger::s_maxLogCount = 1000;
|
||||
unsigned int FileLogger::s_amountOfLogFiles = 2;
|
||||
|
||||
FileLogger::FileLogger()
|
||||
: Logger("FileLogger")
|
||||
, m_suffix(0)
|
||||
{
|
||||
setupFileName();
|
||||
changeLogFile();
|
||||
}
|
||||
|
||||
FileLogger::~FileLogger()
|
||||
@@ -52,9 +57,10 @@ void FileLogger::setupFileName()
|
||||
filename << (t.tm_mday < 10 ? "0" : "") << t.tm_mday << "_";
|
||||
filename << (t.tm_hour < 10 ? "0" : "") << t.tm_hour << "-";
|
||||
filename << (t.tm_min < 10 ? "0" : "") << t.tm_min << "-";
|
||||
filename << (t.tm_sec < 10 ? "0" : "") << t.tm_sec << ".txt";
|
||||
filename << (t.tm_sec < 10 ? "0" : "") << t.tm_sec << "_";
|
||||
|
||||
m_fileName = filename.str();
|
||||
|
||||
}
|
||||
|
||||
void FileLogger::createDirectory()
|
||||
@@ -65,10 +71,25 @@ void FileLogger::createDirectory()
|
||||
}
|
||||
}
|
||||
|
||||
void FileLogger::setMaxLogCount(unsigned int logCount)
|
||||
{
|
||||
s_maxLogCount = logCount;
|
||||
}
|
||||
|
||||
void FileLogger::changeLogFile()
|
||||
{
|
||||
m_suffix = ++m_suffix%s_amountOfLogFiles;
|
||||
m_currentLogFile = s_filePath + m_fileName + char(m_suffix + 48) + ".txt";
|
||||
if(FileSystem::exists(m_currentLogFile))
|
||||
{
|
||||
std::remove(m_currentLogFile.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
void FileLogger::logMessage(const std::string& type, const LogMessage& message)
|
||||
{
|
||||
std::ofstream fileStream;
|
||||
fileStream.open(s_filePath + m_fileName, std::ios::app);
|
||||
fileStream.open(m_currentLogFile, std::ios::app);
|
||||
fileStream << message.getTimeString("%H:%M:%S") << " | ";
|
||||
|
||||
if (message.filePath.size())
|
||||
@@ -78,4 +99,9 @@ void FileLogger::logMessage(const std::string& type, const LogMessage& message)
|
||||
|
||||
fileStream << type << ": " << message.message << std::endl;
|
||||
fileStream.close();
|
||||
if(++m_logCount >= s_maxLogCount)
|
||||
{
|
||||
changeLogFile();
|
||||
m_logCount = 0;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user