NLog.Targets.FileTarget.GetArchiveDate C# (CSharp) Method

GetArchiveDate() private method

private GetArchiveDate ( string fileName, LogEventInfo logEvent ) : System.DateTime
fileName string
logEvent LogEventInfo
return System.DateTime
        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;
        }