daemonization.

This commit is contained in:
orignal 2014-07-02 13:48:45 -04:00
parent 3a864cb6c5
commit 334c92bb49
6 changed files with 74 additions and 46 deletions

30
Log.h
View file

@ -37,7 +37,25 @@ class Log: public i2p::util::MsgQueue<LogMsg>
std::ofstream * m_LogFile;
};
extern Log g_Log;
extern Log * g_Log;
inline void StartLog (const std::string& fullFilePath)
{
if (!g_Log)
{
g_Log = new Log ();
g_Log->SetLogFile (fullFilePath);
}
}
inline void StopLog ()
{
if (g_Log)
{
delete g_Log;
g_Log = nullptr;
}
}
template<typename TValue>
void LogPrint (std::stringstream& s, TValue arg)
@ -55,10 +73,16 @@ void LogPrint (std::stringstream& s, TValue arg, TArgs... args)
template<typename... TArgs>
void LogPrint (TArgs... args)
{
LogMsg * msg = g_Log.GetLogFile () ? new LogMsg (*g_Log.GetLogFile ()) : new LogMsg ();
LogMsg * msg = (g_Log && g_Log->GetLogFile ()) ? new LogMsg (*g_Log->GetLogFile ()) : new LogMsg ();
LogPrint (msg->s, args...);
msg->s << std::endl;
g_Log.Put (msg);
if (g_Log)
g_Log->Put (msg);
else
{
msg->Process ();
delete msg;
}
}
#endif