/** * @file ssulog.cpp * @copyright 2013 Jolla Ltd. * @author Bernd Wachter * @date 2013 */ #include #include #include "ssulog_p.h" #include "ssucoreconfig_p.h" SsuLog *SsuLog::ssuLog = 0; SsuLog *SsuLog::instance() { if (!ssuLog) { ssuLog = new SsuLog; ssuLog->fallbackLogPath = "/tmp/ssu.log"; ssuLog->ssuLogLevel = -1; } return ssuLog; } void SsuLog::print(int priority, QString message) { // directly go through qsettings here to avoid recursive invocation // of coreconfig / ssulog if (ssuLogLevel == -1) { QSettings settings(SSU_CONFIGURATION, QSettings::IniFormat); if (settings.contains("loglevel")) ssuLog->ssuLogLevel = settings.value("loglevel").toInt(); else ssuLog->ssuLogLevel = LOG_ERR; } // this is rather dirty, but since systemd does not seem to allow to enable debug // logging only for specific services probably best way for now if (priority > ssuLogLevel) return; QByteArray ba = message.toUtf8(); const char *ca = ba.constData(); if (sd_journal_print(priority, "ssu: %s", ca) < 0 && !fallbackLogPath.isEmpty()) { QFile logfile; QTextStream logstream; logfile.setFileName(fallbackLogPath); logfile.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append); logstream.setDevice(&logfile); logstream << message << "\n"; logstream.flush(); } }