void RollingFileAppender::removeOldFiles()
{
  if (m_logFilesLimit <= 1)
    return;

  QFileInfo fileInfo(fileName());
  QDir logDirectory(fileInfo.absoluteDir());
  logDirectory.setFilter(QDir::Files);
  logDirectory.setNameFilters(QStringList() << fileInfo.fileName() + "*");
  QFileInfoList logFiles = logDirectory.entryInfoList();

  QMap<QDateTime, QString> fileDates;
  for (int i = 0; i < logFiles.length(); ++i)
  {
    QString name = logFiles[i].fileName();
    QString suffix = name.mid(name.indexOf(fileInfo.fileName()) + fileInfo.fileName().length());
    QDateTime fileDateTime = QDateTime::fromString(suffix, datePatternString());

    if (fileDateTime.isValid())
      fileDates.insert(fileDateTime, logFiles[i].absoluteFilePath());
  }

  QList<QString> fileDateNames = fileDates.values();
  for (int i = 0; i < fileDateNames.length() - m_logFilesLimit + 1; ++i)
    QFile::remove(fileDateNames[i]);
}
Exemplo n.º 2
0
void TvnServer::resetLogFilePath()
{
  StringStorage pathToLogDirectory;

  TvnLogFilename::queryLogFileDirectory(m_runAsService,
    m_config->isSaveLogToAllUsersPathFlagEnabled(),
    &pathToLogDirectory);

  {
    File logDirectory(pathToLogDirectory.getString());

    logDirectory.mkdir();
  }

  StringStorage pathToLogFile;

  TvnLogFilename::queryLogFilePath(m_runAsService,
    m_config->isSaveLogToAllUsersPathFlagEnabled(),
    &pathToLogFile);

  m_config->setLogFilePath(pathToLogFile.getString());

  m_log.changeFilename(pathToLogFile.getString());
}