X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Flogger.cpp;h=d9708f780923a79fc3e9d10505ec758165dfa6dd;hp=d8da4c7dbe6b69cd14ab796fa3d4eec2c93d9d51;hb=98bec7bab038a8e656f90617c59fe1e8c0907f71;hpb=2deb46a3ce819c709800f1ded9072e62807b9574 diff --git a/src/common/logger.cpp b/src/common/logger.cpp index d8da4c7d..d9708f78 100644 --- a/src/common/logger.cpp +++ b/src/common/logger.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005 by the Quassel Project * + * Copyright (C) 2005-2012 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -18,105 +18,93 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#include "logger.h" -#include "quassel.h" - -#ifdef HAVE_SYSLOG_H -#include -#else #include #include #include + +#ifdef HAVE_SYSLOG +# include #endif +#include "logger.h" +#include "quassel.h" + Logger::~Logger() { - QDateTime date = QDateTime::currentDateTime(); + log(); +} + +void Logger::log() { + if(_logLevel < Quassel::logLevel()) + return; + + switch(_logLevel) { + case Quassel::DebugLevel: + _buffer.prepend("Debug: "); + break; + case Quassel::InfoLevel: + _buffer.prepend("Info: "); + break; + case Quassel::WarningLevel: + _buffer.prepend("Warning: "); + break; + case Quassel::ErrorLevel: + _buffer.prepend("Error: "); + break; + default: + break; + } - switch (_logLevel) { - case DebugLevel: - _buffer.prepend("Debug: "); +#ifdef HAVE_SYSLOG + if(Quassel::logToSyslog()) { + int prio; + switch(_logLevel) { + case Quassel::DebugLevel: + prio = LOG_DEBUG; break; - case InfoLevel: - _buffer.prepend("Info: "); + case Quassel::InfoLevel: + prio = LOG_INFO; break; - case WarningLevel: - _buffer.prepend("Warning: "); + case Quassel::WarningLevel: + prio = LOG_WARNING; break; - case ErrorLevel: - _buffer.prepend("Error: "); + case Quassel::ErrorLevel: + prio = LOG_ERR; break; default: - Q_ASSERT(_logLevel); // There should be no unknown log level + prio = LOG_INFO; break; + } + syslog(LOG_USER & prio, "%s", qPrintable(_buffer)); } -#ifndef HAVE_SYSLOG_H - _buffer.prepend(date.toString("yyyy-MM-dd hh:mm:ss ")); #endif - log(); -} -void Logger::log() { - LogLevel lvl; - if (Quassel::optionValue("loglevel") == "Debug") lvl = DebugLevel; - else if (Quassel::optionValue("loglevel") == "Info") lvl = InfoLevel; - else if (Quassel::optionValue("loglevel") == "Warning") lvl = WarningLevel; - else if (Quassel::optionValue("loglevel") == "Error") lvl = ErrorLevel; - else lvl = InfoLevel; + _buffer.prepend(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss ")); - if(_logLevel < lvl) return; + // if we don't have a logfile we log to stdout -#ifdef HAVE_SYSLOG_H - if (Quassel::isOptionSet("syslog")) { - int prio; - switch (lvl) { - case DebugLevel: - prio = LOG_DEBUG; - break; - case InfoLevel: - prio = LOG_INFO; - break; - case WarningLevel: - prio = LOG_WARNING; - break; - case ErrorLevel: - prio = LOG_ERR; - break; - default: - prio = LOG_INFO; - break; - } - syslog(LOG_USER & prio, "%s", qPrintable(_buffer)); - } -#else - // if we can't open logfile we log to stdout QTextStream out(stdout); - QFile file; - if(!Quassel::optionValue("logfile").isEmpty()) { - file.setFileName(Quassel::optionValue("logfile")); - if (file.open(QIODevice::Append | QIODevice::Text)) { - out.setDevice(&file); - _buffer.remove(QChar('\n')); - } + if(Quassel::logFile() && Quassel::logFile()->isOpen()) { + _buffer.remove(QChar('\n')); + out.setDevice(Quassel::logFile()); } + out << _buffer << endl; - if(file.isOpen()) file.close(); -#endif } void Logger::logMessage(QtMsgType type, const char *msg) { switch (type) { case QtDebugMsg: - Logger(Logger::DebugLevel) << msg; + Logger(Quassel::DebugLevel) << msg; break; case QtWarningMsg: - Logger(Logger::WarningLevel) << msg; + Logger(Quassel::WarningLevel) << msg; break; case QtCriticalMsg: - Logger(Logger::ErrorLevel) << msg; + Logger(Quassel::ErrorLevel) << msg; break; case QtFatalMsg: - Logger(Logger::ErrorLevel) << msg; + Logger(Quassel::ErrorLevel) << msg; Quassel::logFatalMessage(msg); return; }