Exemple #1
0
/** 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();
}
Exemple #2
0
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));
}
Exemple #3
0
/** 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();
}
Exemple #4
0
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;
		}
	}
}