mirror of
https://github.com/UltimMC/Launcher.git
synced 2025-12-23 12:10:00 +00:00
Renew the updater branch
Now with some actual consensus on what the updater will do!
This commit is contained in:
65
mmc_updater/src/Log.cpp
Normal file
65
mmc_updater/src/Log.cpp
Normal file
@@ -0,0 +1,65 @@
|
||||
#include "Log.h"
|
||||
|
||||
#include "Platform.h"
|
||||
#include "StringUtils.h"
|
||||
#include "ProcessUtils.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <iostream>
|
||||
|
||||
Log m_globalLog;
|
||||
|
||||
Log* Log::instance()
|
||||
{
|
||||
return &m_globalLog;
|
||||
}
|
||||
|
||||
Log::Log()
|
||||
{
|
||||
}
|
||||
|
||||
Log::~Log()
|
||||
{
|
||||
}
|
||||
|
||||
void Log::open(const std::string& path)
|
||||
{
|
||||
m_mutex.lock();
|
||||
m_output.open(path.c_str(),std::ios_base::out | std::ios_base::app);
|
||||
m_mutex.unlock();
|
||||
}
|
||||
|
||||
void Log::writeToStream(std::ostream& stream, Type type, const char* text)
|
||||
{
|
||||
// Multiple processes may be writing to the same log file during
|
||||
// an update. No attempt is made to synchronize access to the file.
|
||||
//
|
||||
// Under Unix, appends to a single file on a local FS by multiple writers should be atomic
|
||||
// provided that the length of 'text' is less than PIPE_BUF
|
||||
//
|
||||
switch (type)
|
||||
{
|
||||
case Info:
|
||||
stream << "INFO ";
|
||||
break;
|
||||
case Warn:
|
||||
stream << "WARN ";
|
||||
break;
|
||||
case Error:
|
||||
stream << "ERROR ";
|
||||
break;
|
||||
}
|
||||
stream << '(' << intToStr(ProcessUtils::currentProcessId()) << ") " << text << std::endl;
|
||||
}
|
||||
|
||||
void Log::write(Type type, const char* text)
|
||||
{
|
||||
m_mutex.lock();
|
||||
writeToStream(std::cerr,type,text);
|
||||
if (m_output.is_open())
|
||||
{
|
||||
writeToStream(m_output,type,text);
|
||||
}
|
||||
m_mutex.unlock();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user