1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- using System;
- using System.Collections.Generic;
- using System.Configuration;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.Timers;
- namespace SinoChemFC2PosProxy
- {
- public class LogPurge
- {
- private System.Timers.Timer scannerTimer;
- private int purgeLogFilesWhenOldThanDays = -1;
- string[] searchFolders = new[]
- {
- //Proxy_Main_20150831.txt
- @"c:\Wayne\Log\SinoChemFC2PosProxy\",
- //SSF.FC.20150826.132125928.LOG.gz
- @"c:\Program Files\Fusion\Bin\SSF.Logs\SSF.FC.Logs\Backup\",
- //SSF.ROUTER.20150826.094252740.LOG.gz
- @"c:\Program Files\Fusion\Bin\SSF.Logs\SSF.Router.Logs\Backup\",
- };
- public void Start()
- {
- this.purgeLogFilesWhenOldThanDays = int.Parse(ConfigurationManager.AppSettings["purgeLogFilesWhenOldThanDays"]);
- // every 1 days, do a log purge.
- this.scannerTimer = new System.Timers.Timer(1000 * 60);// * 60 * 24);
- this.scannerTimer.Elapsed += scannerTimer_Elapsed;
- this.scannerTimer.Start();
- }
- void scannerTimer_Elapsed(object sender, ElapsedEventArgs e)
- {
- foreach (var dirPath in searchFolders)
- {
- var dirInfo = new DirectoryInfo(dirPath);
- if (!dirInfo.Exists) continue;
- foreach (var logFileInfo in dirInfo.GetFiles())
- {
- if (isFilePendingForPurge(logFileInfo))
- {
- logFileInfo.Delete();
- }
- }
- }
- }
- private bool isFilePendingForPurge(FileInfo fileInfo)
- {
- Regex r = new Regex(@"20\d\d\d\d\d\d\.");
- var dateInFileName = r.Match(fileInfo.Name);
- if (dateInFileName.Success)
- {
- var dateString = dateInFileName.Value.Substring(0, dateInFileName.Value.Length - 1);
- dateString = dateString.Substring(0, 4) + "-" + dateString.Substring(4, 2) + "-" +
- dateString.Substring(6, 2);
- DateTime convertedDateTime;
- try
- {
- convertedDateTime = DateTime.Parse(dateString);
- }
- catch (Exception exx)
- { return false; }
- var timeDiff = DateTime.Now - convertedDateTime;
- if (timeDiff.TotalDays >= this.purgeLogFilesWhenOldThanDays)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- return false;
- }
- }
- }
|