+ QString logfilename = Quassel::optionValue("logfile");
+ if (!logfilename.isEmpty()) {
+ _logFile.setFileName(logfilename);
+ if (!_logFile.open(QFile::Append | QFile::Unbuffered | QFile::Text)) {
+ qCritical() << qPrintable(tr("Could not open log file \"%1\": %2").arg(logfilename, _logFile.errorString()));
+ }
+ }
+ if (!_logFile.isOpen()) {
+ if (!_logFile.open(stderr, QFile::WriteOnly | QFile::Unbuffered | QFile::Text)) {
+ qCritical() << qPrintable(tr("Cannot write to stderr: %1").arg(_logFile.errorString()));
+ }
+ }
+
+#ifdef HAVE_SYSLOG
+ _syslogEnabled = Quassel::isOptionSet("syslog");
+
+ Quassel::RunMode mode = Quassel::runMode();
+ Quassel::BuildInfo info = Quassel::buildInfo();
+ QString prgname = info.applicationName;
+
+ if (mode == Quassel::RunMode::ClientOnly) {
+ prgname = info.clientApplicationName;
+ } else if (mode == Quassel::RunMode::CoreOnly) {
+ prgname = info.coreApplicationName;
+ }
+
+ _prgname = prgname.toLocal8Bit();
+
+ // set up options, program name, and facility for later calls to syslog(3)
+ if (_syslogEnabled) {
+ openlog(_prgname.constData(), LOG_PID, LOG_USER);
+ }
+#endif
+
+ _initialized = true;
+
+ // Now that we've setup our logging backends, output pending messages
+ for (auto&& message : _messages) {
+ outputMessage(message);
+ }
+ if (!_keepMessages) {
+ _messages.clear();