protected void RollOverRenameFiles(string baseFileName, DateTime timeStamp)
{
if (_maxSizeRollBackups == 0)
{
return;
}
FileInfo[] logFiles;
string directoryName;
string backupFileName;
using (SecurityContext.Impersonate(this))
{
directoryName = baseFileName.GetDirectoryName();
logFiles = new DirectoryInfo(directoryName)
.GetFiles(ActivityLogFile.GetWildcartPatternFor(baseFileName))
.OrderBy(x => ActivityLogFile.GetOrder(x.Name))
.ToArray();
backupFileName = ActivityLogFile.ComposeFileName(baseFileName, timeStamp);
}
if (_countDirection < 0)
{
if (_curSizeRollBackups == _maxSizeRollBackups)
{
DeleteFile(logFiles[_maxSizeRollBackups - 1].FullName);
--_curSizeRollBackups;
}
for (int index = _curSizeRollBackups; index > 0; --index)
{
FileInfo file = logFiles[index];
string newFileName;
using (SecurityContext.Impersonate(this))
{
newFileName = file.Name.GetFileNameWithoutExtension() + '.' + (index + 1);
}
RollFile(file.FullName, directoryName.Combine(newFileName));
}
++_curSizeRollBackups;
RollFile(baseFileName, directoryName.Combine(backupFileName + ".1"));
}
else
{
if (_curSizeRollBackups >= _maxSizeRollBackups && _maxSizeRollBackups > 0)
{
int num = _curSizeRollBackups - _maxSizeRollBackups;
if (_staticLogFileName)
{
++num;
}
DeleteFile(logFiles[num].FullName);
}
if (_staticLogFileName)
{
++_curSizeRollBackups;
RollFile(baseFileName, backupFileName + '.' + _curSizeRollBackups);
}
}
}