private void PrintStats() { char topleft = '┌'; char hline = '─'; char topright = '┐'; char vline = '│'; char bottomleft = '└'; char bottomright = '┘'; var builder = new StringBuilder(); builder.Append(topleft); for (int i = 0; i < 104; i++) { builder.Append(hline); } builder.Append(topright); _log.Info(builder.ToString()); _log.Info(String.Format("{0}{1,-14}{2,-90}{0}", vline, "Summary as of ", DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"))); _log.Info(String.Format("{0}{1,-22}{2,-60}{3,11}{4,11}{0}", vline, "Time", "Folder", "Total Files", "Total Mb")); foreach (DateTime item in _stats.Keys) { CleanupStats currentStat = (CleanupStats)_stats[item]; _log.Info(String.Format("{0}{1,-22}{2,-60}{3,11}{4,11:n0}{0}", vline, item.ToString("dd/MM/yyyy HH:mm:ss"), currentStat.folder, currentStat.totalFiles, currentStat.totalBytes / (1024 * 1024))); } builder.Clear(); builder.Append(bottomleft); for (int i = 0; i < 104; i++) { builder.Append(hline); } builder.Append(bottomright); _log.Info(builder.ToString()); }
private void PurgeFiles(string dirPath) { try { DateTime today = DateTime.Now.Date; TimeSpan keepBuffer = new TimeSpan(_daysToKeep, 0, 0, 0); if (!_dailyTotals.Contains(today)) { _dailyTotals[today] = (long)0; } string[] folders = Directory.GetDirectories(dirPath, "*", SearchOption.AllDirectories); foreach (string folder in folders) { string[] files = Directory.GetFiles(folder, "*", SearchOption.TopDirectoryOnly); if (files.Length == 0) { // don't process empty folders continue; } _log.Info(String.Format("Purging folder {0} -> {1} files", folder, files.Length)); CleanupStats stats = new CleanupStats() { totalBytes = 0, totalFiles = 0 }; foreach (string file in files) { try { FileInfo fi = new FileInfo(file); stats.totalBytes += fi.Length; stats.totalFiles++; stats.folder = folder; try { if (fi.LastWriteTime > today - keepBuffer) { // recently created archive, so don't delete _log.Debug("Not deleting recent file " + file); continue; } if (_simulate == true) { _log.Debug("Would have deleted " + file); } else { File.Delete(file); _dailyTotals[today] = (object)((long)_dailyTotals[today] + stats.totalBytes); } } catch (Exception ex) { _log.Error("File.Delete try PurgeFiles: " + ex.Message); } } catch (Exception ex) { _log.Error("Inner try PurgeFiles: " + ex.Message); } } _stats.Add(DateTime.Now, stats); } } catch (Exception ex) { _log.Error("Outer try PurgeFiles: " + ex.Message); } }