From 86f7104248cb35469cc1f7516e4a4e9978b6307f Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Thu, 17 Jan 2019 13:15:57 +0100 Subject: [PATCH] Fix procedura di shrink directory x log --- IOB-UT/baseUtils.cs | 34 ++++++++++++++++++++++++++++++++-- IOB-UT/fileMover.cs | 17 +++++++++++++---- IOB-WIN/App.config | 1 + 3 files changed, 46 insertions(+), 6 deletions(-) diff --git a/IOB-UT/baseUtils.cs b/IOB-UT/baseUtils.cs index 5656a3cf..c5765e80 100644 --- a/IOB-UT/baseUtils.cs +++ b/IOB-UT/baseUtils.cs @@ -1,4 +1,4 @@ -using NLog; +using NLog; using System; using System.Collections; using System.Collections.Generic; @@ -492,8 +492,13 @@ namespace IOB_UT /// public static void shrinkDir(string dirPath) { - // ottengo elenco files *.txt + Logger lg = LogManager.GetCurrentClassLogger(); + // obj filemover... fileMover.obj.setDirectory(dirPath); + float dirSizeMb = fileMover.obj.totalMb(); + lg.Info("Inizio shrinkDir LOG folder: {0} Mb", dirSizeMb); + + // ottengo elenco files *.txt FileInfo[] _fis = fileMover.obj.elencoFiles_FI("*.log"); int numDdMax = 2; try @@ -511,6 +516,31 @@ namespace IOB_UT fileMover.obj.eliminaFile(_file); } } + // ora controllo SE sia superata la dim max della directory --> in tal caso cancello dal + vecchio... + dirSizeMb = fileMover.obj.totalMb(); + int maxLogDirSize = CRI("maxLogDirSize"); + int maxTry = 100; + // controllo se serva eliminare... + if (dirSizeMb > maxLogDirSize) + { + lg.Info("Continuo shrinkDir LOG folder: {0} Mb --> ELIMINAZIONE FILES", dirSizeMb); + while (dirSizeMb > maxLogDirSize) + { + fileMover.obj.deleteOldest(); + maxTry--; + if (maxTry > 0) + { + dirSizeMb = fileMover.obj.totalMb(); + } + else + { + // per uscire fingo di aver ridotto... + dirSizeMb = maxLogDirSize - 1; + } + } + dirSizeMb = fileMover.obj.totalMb(); + lg.Info("Completata shrinkDir LOG folder: {0} Mb", dirSizeMb); + } } } /// diff --git a/IOB-UT/fileMover.cs b/IOB-UT/fileMover.cs index de5619de..66b8729e 100644 --- a/IOB-UT/fileMover.cs +++ b/IOB-UT/fileMover.cs @@ -915,14 +915,23 @@ theEntry.Name; FileInfo[] _fis = _di.GetFiles(); DateTime _oldest = DateTime.Now; string _nome = ""; - foreach (FileInfo _file in _fis) + try { - if (_file.CreationTime < _oldest) + FileInfo _currFI = _fis[0]; + foreach (FileInfo _file in _fis) { - _nome = _file.Name; + if (_file.LastWriteTime < _oldest) + { + _nome = _file.Name; + _oldest = _file.LastWriteTime; + _currFI = _file; + } } + //eliminaFile(_nome); + eliminaFile(_currFI); } - eliminaFile(_nome); + catch + { } } #endregion diff --git a/IOB-WIN/App.config b/IOB-WIN/App.config index 9060cac4..f8ae5a22 100644 --- a/IOB-WIN/App.config +++ b/IOB-WIN/App.config @@ -68,6 +68,7 @@ +