- 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;
-
- if(_logLevel < lvl) return;
-
- // 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);
+ 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;
+ }
+
+#ifdef HAVE_SYSLOG
+ if(Quassel::logToSyslog()) {
+ int prio;
+ switch(_logLevel) {
+ case Quassel::DebugLevel:
+ prio = LOG_DEBUG;
+ break;
+ case Quassel::InfoLevel:
+ prio = LOG_INFO;
+ break;
+ case Quassel::WarningLevel:
+ prio = LOG_WARNING;
+ break;
+ case Quassel::ErrorLevel:
+ prio = LOG_ERR;
+ break;
+ default:
+ prio = LOG_INFO;
+ break;
+ }
+ syslog(LOG_USER & prio, "%s", qPrintable(_buffer));
+ }
+#endif
+
+ // if we neither use syslog nor have a logfile we log to stdout
+
+ if(Quassel::logFile() || !Quassel::logToSyslog()) {
+ _buffer.prepend(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss "));
+
+ QTextStream out(stdout);
+ if(Quassel::logFile() && Quassel::logFile()->isOpen()) {