Reduced code duplication (setup file logging)

This commit is contained in:
Nick Bolton 2010-06-05 13:13:07 +00:00
parent f83e91f304
commit 028142bee9
4 changed files with 20 additions and 27 deletions

View File

@ -43,6 +43,9 @@ s_suspended(false)
CApp::~CApp()
{
delete m_args;
CLOG->remove(m_fileLog);
delete m_fileLog;
}
CApp::CArgsBase::CArgsBase() :
@ -294,3 +297,13 @@ CApp::daemonMainLoop(int, const char**)
#endif
return mainLoop();
}
void
CApp::setupFileLogging()
{
if (argsBase().m_logFile != NULL) {
m_fileLog = new CFileLogOutputter(argsBase().m_logFile);
CLOG->insert(m_fileLog);
LOG((CLOG_DEBUG1 "logging to file (%s) enabled", argsBase().m_logFile));
}
}

View File

@ -20,6 +20,7 @@
class IArchTaskBarReceiver;
class CBufferedLogOutputter;
class ILogOutputter;
class CFileLogOutputter;
typedef IArchTaskBarReceiver* (*CreateTaskBarReceiverFunc)(const CBufferedLogOutputter*);
typedef int (*StartupFunc)(int, char**);
@ -90,6 +91,9 @@ public:
bool s_suspended;
IArchTaskBarReceiver* s_taskBarReceiver;
// If --log was specified in args, then add a file logger.
void setupFileLogging();
protected:
virtual void parseArgs(int argc, const char* const* argv, int &i);
virtual bool parseArg(const int& argc, const char* const* argv, int& i);
@ -97,6 +101,7 @@ protected:
private:
CArgsBase* m_args;
static CApp* s_instance;
CFileLogOutputter* m_fileLog;
};
#define BYE "\nTry `%s --help' for more information."

View File

@ -491,13 +491,7 @@ CClientApp::mainLoop()
// logging to files
CFileLogOutputter* fileLog = NULL;
if (args().m_logFile != NULL) {
fileLog = new CFileLogOutputter(args().m_logFile);
CLOG->insert(fileLog);
LOG((CLOG_DEBUG1 "Logging to file (%s) enabled", args().m_logFile));
}
setupFileLogging();
// create socket multiplexer. this must happen after daemonization
// on unix because threads evaporate across a fork().
@ -532,11 +526,6 @@ CClientApp::mainLoop()
updateStatus();
LOG((CLOG_NOTE "stopped client"));
if (fileLog) {
CLOG->remove(fileLog);
delete fileLog;
}
return kExitSuccess;
}

View File

@ -728,16 +728,7 @@ int CServerApp::mainLoop()
// create the event queue
CEventQueue eventQueue;
// logging to files
CFileLogOutputter* fileLog = NULL;
if (args().m_logFile != NULL) {
fileLog = new CFileLogOutputter(args().m_logFile);
CLOG->insert(fileLog);
LOG((CLOG_DEBUG1 "Logging to file (%s) enabled", args().m_logFile));
}
setupFileLogging();
// if configuration has no screens then add this system
// as the default
@ -810,11 +801,6 @@ int CServerApp::mainLoop()
updateStatus();
LOG((CLOG_NOTE "stopped server"));
if (fileLog) {
CLOG->remove(fileLog);
delete fileLog;
}
return kExitSuccess;
}