public Stream GetStream()
{
var filePath = GetFileName(m_configuration);
if (System.IO.File.Exists(filePath))
{
if (m_configuration.AppendToEnd)
{
if (m_configuration.ArchiveEvery.HasValue)
{
var originalCreationDate = System.IO.File.GetCreationTime(filePath);
if ((m_configuration.ArchiveEvery.Value == ArchiveOptions.Hour && originalCreationDate.AddHours(1) > DateTime.Now) ||
(m_configuration.ArchiveEvery.Value == ArchiveOptions.Day && originalCreationDate.AddDays(1) > DateTime.Now) ||
(m_configuration.ArchiveEvery.Value == ArchiveOptions.Week && originalCreationDate.AddDays(7) > DateTime.Now) ||
(m_configuration.ArchiveEvery.Value == ArchiveOptions.Month && originalCreationDate.AddMonths(1) > DateTime.Now))
{
return new OverrideStreamFlush(CreateFile(filePath));
}
}
else
{
return new OverrideStreamFlush(CreateFile(filePath));
}
}
if (!m_configuration.Archive)
{
throw new Exception(string.Format("The file '{0}' already exist and not configured to be archived", filePath));
}
ArchiveFile(m_configuration, filePath);
return new OverrideStreamFlush(CreateFile(filePath));
}
else
{
return new OverrideStreamFlush(CreateFile(filePath));
}
}