示例#1
0
 public static void Archive(ArchiveArgs args)
 {
     lock (LockObject)
     {
         ArchiveOnWriters(DirectWriters, args);
         ArchiveOnWriters(BackgroundThreadQueue.Writers, args);
     }
 }
        public void Archive(ArchiveArgs args)
        {
            if (!_isInitialized)
            {
                throw new Exception("FileStreamLogWriter was not initialized.");
            }

            _archive.Archive(args);
        }
        private void CreateArchiveInLoggingFolder(ArchiveArgs args)
        {
            if (System.IO.File.Exists(ZippedFullFileName))
            {
                System.IO.File.Delete(ZippedFullFileName);
            }

            ZipFilesInDateRange(args, ArchiveZipSearchPattern);

            IsArchiveSuccess = true;
        }
        private void ZipFilesInDateRange(ArchiveArgs args, string archiveZipSearchPattern)
        {
            var total =
                new List <string>(Directory.GetFiles(CurrentDirectory, archiveZipSearchPattern)).Count();
            var filePathsToZip = new List <string>(Directory.GetFiles(CurrentDirectory, archiveZipSearchPattern))
                                 .Select(f => new { FilePath = f, FileDateTime = DateTimeFromFile(f) })
                                 .OrderByDescending(f => f.FileDateTime)
                                 .Where(f => f.FileDateTime.Date >= args.Start.Date && f.FileDateTime.Date <= args.End)
                                 .Select(f => f.FilePath);

            var test = new List <string>(Directory.GetFiles(CurrentDirectory, archiveZipSearchPattern))
                       .Select(f => new { FilePath = f, FileDateTime = DateTimeFromFile(f) })
                       .OrderByDescending(f => f.FileDateTime)
                       .Where(f => f.FileDateTime.Date >= args.Start.Date && f.FileDateTime.Date <= args.End)
                       .Select(f => f).ToList();

            long bytesZipped = 0;
            int  count       = 0;

            foreach (var file in filePathsToZip)
            {
                count++;
                if (FileIo.IsFileLocked(new FileInfo(file)))
                {
                    continue;
                }

                ZipAFile(file, Path.GetFileName(file), ZippedFullFileName, true);

                if (ArchiveArgs.IgnoreFileSizeLimits >= args.MaxArchiveSizeBytes)
                {
                    continue;
                }

                var fileInfo = new FileInfo(file);

                bytesZipped += fileInfo.Length;

                if (bytesZipped <= args.MaxArchiveSizeBytes)
                {
                    continue;
                }

                CreateEmptyFileInZip("FileSizeLimitReached.txt", ZippedFullFileName);
                break;
            }

            if (!System.IO.File.Exists(ZippedFullFileName))
            {
                CreateEmptyFileInZip("noLogs.txt", ZippedFullFileName);
            }
        }
        public void Archive(ArchiveArgs args)
        {
            IsArchiveSuccess     = false;
            ArchiveFailException = null;
            _zipFileName         = Path.ChangeExtension(FileName, "." + args.Start.ToString(FileConst.CLogFilenameFormat) + "--" + args.End.ToString(FileConst.CLogFilenameFormat) + ".zip");

            try
            {
                CreateArchiveInLoggingFolder(args);
                MoveArchiveToArchiveFolder(Path.Combine(CurrentDirectory, "Archive"));
            }
            catch (Exception ex)
            {
                ArchiveFailException = ex;
            }
        }
示例#6
0
        private static void ArchiveOnWriters(IEnumerable <ILogWriter> writers, ArchiveArgs args)
        {
            foreach (var writer in writers)
            {
                var archiver = writer as ILogArchiver;
                if (archiver == null)
                {
                    continue;
                }

                archiver.Archive(args);
                if (false != archiver.IsArchiveSuccess)
                {
                    continue;
                }

                WriteSystem(archiver.ArchiveFailException.ToString());
                WriteError("", typeof(Log).FullName, MethodBase.GetCurrentMethod().Name, archiver.ArchiveFailException);
            }
        }