/** Loads the saved Message Log settings */ void MessageLog::loadSettings() { /* Set Max Count widget */ uint maxMsgCount = getSetting(SETTING_MAX_MSG_COUNT, DEFAULT_MAX_MSG_COUNT).toUInt(); ui.spnbxMaxCount->setValue(maxMsgCount); ui.listMessages->setMaximumMessageCount(maxMsgCount); ui.listNotifications->setMaximumItemCount(maxMsgCount); /* Set whether or not logging to file is enabled */ _enableLogging = getSetting(SETTING_ENABLE_LOGFILE, DEFAULT_ENABLE_LOGFILE).toBool(); QString logfile = getSetting(SETTING_LOGFILE, DEFAULT_LOGFILE).toString(); ui.lineFile->setText(QDir::convertSeparators(logfile)); rotateLogFile(logfile); ui.chkEnableLogFile->setChecked(_logFile.isOpen()); /* Set the checkboxes accordingly */ _filter = getSetting(SETTING_MSG_FILTER, DEFAULT_MSG_FILTER).toUInt(); ui.chkTorErr->setChecked(_filter & tc::ErrorSeverity); ui.chkTorWarn->setChecked(_filter & tc::WarnSeverity); ui.chkTorNote->setChecked(_filter & tc::NoticeSeverity); ui.chkTorInfo->setChecked(_filter & tc::InfoSeverity); ui.chkTorDebug->setChecked(_filter & tc::DebugSeverity); registerLogEvents(); /* Filter the message log */ QApplication::setOverrideCursor(Qt::WaitCursor); ui.listMessages->filter(_filter); QApplication::restoreOverrideCursor(); }
void FileLogWriter::log(core::system::LogLevel logLevel, const std::string& message) { if (logLevel > logLevel_) return; rotateLogFile(); // Swallow errors--we can't do anything anyway core::appendToFile(logFile_, formatLogEntry(programIdentity_, message)); }
/** Saves the Message Log settings, adjusts the message list if required, and * then hides the settings frame. */ void MessageLog::saveSettings() { /* Update the logging status */ _enableLogging = ui.chkEnableLogFile->isChecked(); if (_enableLogging && ui.lineFile->text().isEmpty()) { /* The user chose to enable logging messages to a file, but didn't specify * a log filename. */ VMessageBox::warning(this, tr("Log Filename Required"), p(tr("You must enter a filename to be able to save log " "messages to a file.")), VMessageBox::Ok); return; } if (rotateLogFile(ui.lineFile->text())) { saveSetting(SETTING_LOGFILE, ui.lineFile->text()); saveSetting(SETTING_ENABLE_LOGFILE, _logFile.isOpen()); } ui.lineFile->setText(QDir::convertSeparators(ui.lineFile->text())); ui.chkEnableLogFile->setChecked(_logFile.isOpen()); /* Update the maximum displayed item count */ saveSetting(SETTING_MAX_MSG_COUNT, ui.spnbxMaxCount->value()); ui.listMessages->setMaximumMessageCount(ui.spnbxMaxCount->value()); ui.listNotifications->setMaximumItemCount(ui.spnbxMaxCount->value()); /* Save message filter and refilter the list */ uint filter = 0; ADD_TO_FILTER(filter, tc::ErrorSeverity, ui.chkTorErr->isChecked()); ADD_TO_FILTER(filter, tc::WarnSeverity, ui.chkTorWarn->isChecked()); ADD_TO_FILTER(filter, tc::NoticeSeverity, ui.chkTorNote->isChecked()); ADD_TO_FILTER(filter, tc::InfoSeverity, ui.chkTorInfo->isChecked()); ADD_TO_FILTER(filter, tc::DebugSeverity, ui.chkTorDebug->isChecked()); saveSetting(SETTING_MSG_FILTER, filter); registerLogEvents(); /* Filter the message log */ QApplication::setOverrideCursor(Qt::WaitCursor); ui.listMessages->filter(_filter); QApplication::restoreOverrideCursor(); /* Hide the settings frame and reset toggle button*/ ui.actionSettings->toggle(); }
static void logVPrintf (const LogContext* context, const char* errorStr, const char* format, va_list formatArgs) { char buffer[2048] = ""; int count = vsnprintf (buffer, sizeof (buffer), format, formatArgs); if (count >= (int) sizeof (buffer)) fprintf (stderr, "Error: log entry is too long for format string [%s]\n", format); const char* file = ""; char line[18] = ""; if (pixi_logFileContext && context->file) { file = context->file; snprintf (line, sizeof (line), ":%d: ", context->line); } const char* prog = program_invocation_short_name; const char* lev = pixi_logLevelToStr (context->level); const char* startColor = getLevelColor (context->level); const char* endColor = ""; if (startColor) endColor = levelColors[LogLevelOff]; else startColor = ""; const char* errorColon = ""; if (errorStr) errorColon = ": "; else errorStr = ""; fprintf (stderr, "%s%s%s%s: %s: %s%s%s%s\n", file, line, startColor, prog, lev, buffer, errorColon, errorStr, endColor ); if (logFile) { if (logSize > maxLogSize) rotateLogFile(); char timeStr[40] = ""; pixi_formatCurTime (timeStr, sizeof (timeStr)); int written = fprintf (logFile, "%s %s%s%s: %s%s%s\n", timeStr, file, line, lev, buffer, errorColon, errorStr ); if (written < 0) perror ("Error writing to log file"); else { fflush (logFile); logSize += written; } } }