Resolve the level string in msgWithTime. This means that the log
level string is included in logs to files and stdout even if syslog
output is enabled.
Resolve the program name using RunMode and BuildInfo, distinguishing
between client, core, and monolithic.
[Backported from 0.14/git-master]
QByteArray msgWithTime(const Logger::LogEntry &msg)
{
QByteArray msgWithTime(const Logger::LogEntry &msg)
{
- return (msg.timeStamp.toString("yyyy-MM-dd hh:mm:ss ") + msg.message + "\n").toUtf8();
+ QString levelString;
+
+ switch (msg.logLevel) {
+ case Logger::LogLevel::Debug:
+ levelString = "[Debug] ";
+ break;
+ case Logger::LogLevel::Info:
+ levelString = "[Info ] ";
+ break;
+ case Logger::LogLevel::Warning:
+ levelString = "[Warn ] ";
+ break;
+ case Logger::LogLevel::Error:
+ levelString = "[Error] ";
+ break;
+ case Logger::LogLevel::Fatal:
+ levelString = "[FATAL] ";
+ break;
+ }
+
+ return (msg.timeStamp.toString("yyyy-MM-dd hh:mm:ss ") + levelString + msg.message + "\n").toUtf8();
#ifdef HAVE_SYSLOG
_syslogEnabled = Quassel::isOptionSet("syslog");
#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;
#endif
_initialized = true;
void Logger::handleMessage(LogLevel level, const QString &msg)
{
void Logger::handleMessage(LogLevel level, const QString &msg)
{
- QString logString;
-
- switch (level) {
- case LogLevel::Debug:
- logString = "[Debug] ";
- break;
- case LogLevel::Info:
- logString = "[Info ] ";
- break;
- case LogLevel::Warning:
- logString = "[Warn ] ";
- break;
- case LogLevel::Error:
- logString = "[Error] ";
- break;
- case LogLevel::Fatal:
- logString = "[FATAL] ";
- break;
- }
-
// Use signal connection to make this method thread-safe
// Use signal connection to make this method thread-safe
- emit messageLogged({QDateTime::currentDateTime(), level, logString += msg});
+ emit messageLogged({QDateTime::currentDateTime(), level, msg});
case LogLevel::Fatal:
prio = LOG_CRIT;
}
case LogLevel::Fatal:
prio = LOG_CRIT;
}
- syslog(prio|LOG_USER, "%s", qPrintable(message.message));
+ syslog(prio, "%s", qPrintable(message.message));
std::vector<LogEntry> _messages;
bool _keepMessages{true};
bool _initialized{false};
std::vector<LogEntry> _messages;
bool _keepMessages{true};
bool _initialized{false};
};
Q_DECLARE_METATYPE(Logger::LogEntry)
};
Q_DECLARE_METATYPE(Logger::LogEntry)