private HourlyFileSink GetLatestSink() { EnsureDirectoryCreated(this.logDirectory); HourlyLogFileInfo logFileInfo = HourlyLogFileInfo.GetLatestOrNew(DateTime.UtcNow, this.logDirectory); return(new HourlyFileSink( this.formatter, this.logDirectory, new HourlyLogFileDescription(logFileInfo, DateTime.UtcNow), this.encoding)); }
internal static HourlyLogFileInfo GetLatestOrNew(DateTime date, string logDirectory) { string pattern = date.ToString(DateFormat) + @"-(\d{5}).log"; var logFileInfo = new HourlyLogFileInfo(date, 1); foreach (var filePath in Directory.GetFiles(logDirectory)) { Match match = Regex.Match(filePath, pattern); if (match.Success) { var sequence = uint.Parse(match.Groups[1].Value); if (sequence > logFileInfo.Sequence) { logFileInfo = new HourlyLogFileInfo(date, sequence); } } } return(logFileInfo); }
internal HourlyLogFileDescription(HourlyLogFileInfo logFileInfo, DateTime dateTime) { this.LogFileInfo = logFileInfo; this.DateTime = dateTime; }