X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcommon%2Fquassel.cpp;h=f84001f53968a59091a50bce4e8fb691c6ff73ba;hb=2ed35d8a6322e49ab604472a7af59592cf36ae12;hp=bf63798433ed7e6200e4d31e4e43208752c4715c;hpb=a38400e87c5f729e083796af394643657fbc9df5;p=quassel.git diff --git a/src/common/quassel.cpp b/src/common/quassel.cpp index bf637984..f84001f5 100644 --- a/src/common/quassel.cpp +++ b/src/common/quassel.cpp @@ -51,6 +51,9 @@ bool Quassel::DEBUG = false; QString Quassel::_coreDumpFileName; Quassel *Quassel::_instance = 0; bool Quassel::_handleCrashes = true; +Quassel::LogLevel Quassel::_logLevel = InfoLevel; +QFile *Quassel::_logFile = 0; +bool Quassel::_logToSyslog = false; Quassel::Quassel() { Q_ASSERT(!_instance); @@ -62,6 +65,10 @@ Quassel::Quassel() { } Quassel::~Quassel() { + if(logFile()) { + logFile()->close(); + logFile()->deleteLater(); + } delete _cliParser; } @@ -109,6 +116,31 @@ bool Quassel::init() { } DEBUG = isOptionSet("debug"); + + // set up logging + if(Quassel::runMode() != Quassel::ClientOnly) { + if(isOptionSet("loglevel")) { + QString level = optionValue("loglevel"); + + if(level == "Debug") _logLevel = DebugLevel; + else if(level == "Info") _logLevel = InfoLevel; + else if(level == "Warning") _logLevel= WarningLevel; + else if(level == "Error") _logLevel = ErrorLevel; + } + + QString logfilename = optionValue("logfile"); + if(!logfilename.isEmpty()) { + _logFile = new QFile(logfilename); + if(!_logFile->open(QIODevice::Append | QIODevice::Text)) { + qWarning() << "Could not open log file" << logfilename << ":" << _logFile->errorString(); + _logFile->deleteLater(); + _logFile = 0; + } + } + + _logToSyslog = isOptionSet("syslog"); + } + return true; }