private IEnumerable <SizeLimitedLogFile> GetExistingFiles(string filePathTemplate, long fileSizeLimitBytes) { var directoryName = Path.GetDirectoryName(filePathTemplate); if (string.IsNullOrEmpty(directoryName)) { #if ASPNETCORE50 directory = Directory.GetCurrentDirectory(); #else directoryName = Environment.CurrentDirectory; #endif } directoryName = Path.GetFullPath(directoryName); var filePathTemplateName = Path.GetFileNameWithoutExtension(filePathTemplate); if (!Directory.Exists(directoryName)) { Directory.CreateDirectory(directoryName); } return (Directory.GetFiles(directoryName) .Select(x => FileSinkParser.ParseRollingLogfile(x, fileSizeLimitBytes)) .Where(rollingFile => rollingFile != null) .Where(rollingFile => rollingFile.NameTemplate.Equals(filePathTemplateName))); }
public SizeLimitedFileSink GetNewSink() { IList <SizeLimitedLogFile> existingFiles = this.GetExistingFiles(this.filePathTemplate, this.fileSizeLimitBytes).ToList(); SizeLimitedLogFile nextFile; if (existingFiles.Any()) { var latest = existingFiles.OrderByDescending(x => x.FileNameComponents.Sequence).First(); nextFile = latest.Next(); } else { nextFile = FileSinkParser.ParseRollingLogfile(this.filePathTemplate, this.fileSizeLimitBytes); } return(new SizeLimitedFileSink(this.formatter, this.filePathDirectory, nextFile, this.encoding)); }