private SizeLimitedFileSink GetLatestSink() { EnsureDirectoryCreated(this.logDirectory); SizeLimitedLogFileInfo logFileInfo = SizeLimitedLogFileInfo.GetLatestOrNew(DateTime.UtcNow, this.logDirectory, this.logFilePrefix); return(new SizeLimitedFileSink( this.formatter, this.logDirectory, new SizeLimitedLogFileDescription(logFileInfo, this.fileSizeLimitBytes, this.logFilePrefix), this.encoding)); }
internal static SizeLimitedLogFileInfo GetLatestOrNew(DateTime date, string logDirectory, string logFilePrefix) { string pattern = $"{logFilePrefix}{date.ToString(DateFormat)}" + @"-(\d{5}).log"; var logFileInfo = new SizeLimitedLogFileInfo(date, 1, logFilePrefix); 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 SizeLimitedLogFileInfo(date, sequence, logFilePrefix); } } } return(logFileInfo); }