private DateTime GetArchiveDate(string fileName, LogEventInfo logEvent)
{
var lastWriteTimeUtc = this.fileAppenderCache.GetFileLastWriteTimeUtc(fileName, true);
//todo null check
var lastWriteTime = TimeSource.Current.FromSystemTime(lastWriteTimeUtc.Value);
InternalLogger.Trace("Calculating archive date. Last write time: {0}; Previous log event time: {1}", lastWriteTime, previousLogEventTimestamp);
bool previousLogIsMoreRecent = previousLogEventTimestamp.HasValue && (previousLogEventTimestamp.Value > lastWriteTime);
if (previousLogIsMoreRecent)
{
InternalLogger.Trace("Using previous log event time (is more recent)");
return previousLogEventTimestamp.Value;
}
if (previousLogEventTimestamp.HasValue && PreviousLogOverlappedPeriod(logEvent, lastWriteTime))
{
InternalLogger.Trace("Using previous log event time (previous log overlapped period)");
return previousLogEventTimestamp.Value;
}
InternalLogger.Trace("Using last write time");
return lastWriteTime;
}