|
- using System.Text;
-
- namespace ToolsServices
- {
- public static class LoggerService
- {
- #region Variables
- private static int NiveauEcriture = 0;
- private static string NomFichierData = FichiersInternesService.ParamsLogs; // "paramsLogs.txt";
- #endregion
-
- #region Méthodes publiques
- public static void PurgeLogs()
- {
- LogInfo("LoggerService.PurgeLogs");
-
- var dateMax = DateTime.Now.AddDays(-14);
- var files = Directory.GetFiles(FichiersInternesService.DossierLogs);
-
- foreach(var file in files)
- {
- try
- {
- var filename = Path.GetFileName(file);
-
- var year = int.Parse(filename.Substring(4, 4));
- var month = int.Parse(filename.Substring(9, 2));
- var day = int.Parse(filename.Substring(12, 2));
- var date = new DateTime(year, month, day);
-
- if (date <= dateMax)
- File.Delete(file);
- }
- catch(Exception ex)
- {
- LogError($"LoggerService.PurgeLogs : {ex.Message}");
- }
- }
- }
-
- public static void LogError(string message)
- {
- if (NiveauEcriture <= 3)
- Log($"ERROR", message);
- }
-
- public static void LogWarning(string message)
- {
- if (NiveauEcriture <= 2)
- Log($"WARNING", message);
- }
-
- public static void LogInfo(string message)
- {
- if (NiveauEcriture <= 1)
- Log($"INFO", message);
- }
-
- public static void LogDebug(string message)
- {
- if(NiveauEcriture <= 0)
- Log($"DEBUG", message);
- }
-
- public static string GetLogDay(DateTime date)
- {
- var directory = FichiersInternesService.DossierLogs;
- var FullnameFichierLog = System.IO.Path.Combine(directory, Filename(date));
- var log = "";
- if(File.Exists(FullnameFichierLog))
- log = TxtService.ExtractTextFromTxt(FullnameFichierLog);
- return log;
- }
-
- public static int LoadParametres()
- {
- try
- {
- if (File.Exists(NomFichierData))
- {
-
- string[] lignes = File.ReadAllLines(NomFichierData);
-
- if (lignes.Length > 0)
- NiveauEcriture = int.Parse(lignes[0]);
-
- }
- return NiveauEcriture;
-
- }
-
- catch(Exception ex)
- {
- LogError($"Erreur lors du chargement des paramètres de niveau d'écriture : {ex.Message}");
- NiveauEcriture = 0; // Par défaut, on remet à 0 en cas d'erreur
- return NiveauEcriture;
- }
- }
-
- public static bool SaveParametres(int selectedItem)
- {
- try
- {
- StringBuilder sb = new();
- sb.AppendLine(selectedItem.ToString());
-
- File.WriteAllText(NomFichierData, sb.ToString());
- NiveauEcriture = selectedItem;
- return true;
- }
-
- catch(Exception ex)
- {
- LogError($"Erreur lors de la sauvegarde des paramètres de niveau d'écriture : {ex.Message}");
- return false;
- }
- }
-
- #endregion
-
- #region Méthodes privées
- private static void Log(string level, string message)
- {
- var directory = FichiersInternesService.DossierLogs;
- var FullnameFichierLog = System.IO.Path.Combine(directory, Filename());
- if (!System.IO.Directory.Exists(directory))
- {
- System.IO.Directory.CreateDirectory(directory);
- }
-
- var ligneAdd = $"[{level}]\t[{GetCurrentTime()}]\t{message}";
- File.AppendAllText(FullnameFichierLog, ligneAdd + Environment.NewLine);
- }
-
- private static string GetCurrentTime()
- {
- return DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
- }
-
- private static string Filename(DateTime? date = null)
- {
- DateTime dateOnly = DateTime.Now;
- if (date.HasValue)
- dateOnly = date.Value;
-
- return $"LOG_{dateOnly.ToString("yyyy-MM-dd")}.log";
- }
- #endregion
- }
- }
|