Exemplo n.º 1
0
        private void ProcessArchive(Archive archive, DateTime yesterday)
        {
            //add in older than yesterdays .log files
            var archiveFilesToCompress = _fileGatherer.FilesOlderThan(archive.FilePath, yesterday);

            if (!archiveFilesToCompress.Any())
            {
                Log.Info($"No files found to be archived. FilePath: {archive.FilePath}");
                return;
            }

            var fileListToCompress = _fileBatchProvider.Batch(archiveFilesToCompress);

            foreach (var filesToCompress in fileListToCompress)
            {
                var filesTo   = _archiveNameProvider.DecideArchiveName(archive, yesterday);
                var filesFrom = filesToCompress.ToArray();

                if (!_directoryProvider.Exists(archive.ArchivePath))
                {
                    Log.Warn($"Archive folder does not exist. Creating... {archive.ArchivePath}");
                    _directoryProvider.CreateDirectory(archive.ArchivePath);
                }

                var failed = _compressor.Compress(filesTo, filesFrom);
                //Deletes old logs if there were no error from the compression process
                if (!failed)
                {
                    _fileDeleter.TryDeleteFiles(filesFrom, archive.DeleteArchivedFiles);
                }
            }
        }