Beispiel #1
0
        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)));
        }
Beispiel #2
0
        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));
        }