You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

151 lines
4.4KB

  1. using System.Text;
  2. namespace ToolsServices
  3. {
  4. public static class LoggerService
  5. {
  6. #region Variables
  7. private static int NiveauEcriture = 0;
  8. private static string NomFichierData = FichiersInternesService.ParamsLogs; // "paramsLogs.txt";
  9. #endregion
  10. #region Méthodes publiques
  11. public static void PurgeLogs()
  12. {
  13. LogInfo("LoggerService.PurgeLogs");
  14. var dateMax = DateTime.Now.AddDays(-14);
  15. var files = Directory.GetFiles(FichiersInternesService.DossierLogs);
  16. foreach(var file in files)
  17. {
  18. try
  19. {
  20. var filename = Path.GetFileName(file);
  21. var year = int.Parse(filename.Substring(4, 4));
  22. var month = int.Parse(filename.Substring(9, 2));
  23. var day = int.Parse(filename.Substring(12, 2));
  24. var date = new DateTime(year, month, day);
  25. if (date <= dateMax)
  26. File.Delete(file);
  27. }
  28. catch(Exception ex)
  29. {
  30. LogError($"LoggerService.PurgeLogs : {ex.Message}");
  31. }
  32. }
  33. }
  34. public static void LogError(string message)
  35. {
  36. if (NiveauEcriture <= 3)
  37. Log($"ERROR", message);
  38. }
  39. public static void LogWarning(string message)
  40. {
  41. if (NiveauEcriture <= 2)
  42. Log($"WARNING", message);
  43. }
  44. public static void LogInfo(string message)
  45. {
  46. if (NiveauEcriture <= 1)
  47. Log($"INFO", message);
  48. }
  49. public static void LogDebug(string message)
  50. {
  51. if(NiveauEcriture <= 0)
  52. Log($"DEBUG", message);
  53. }
  54. public static string GetLogDay(DateTime date)
  55. {
  56. var directory = FichiersInternesService.DossierLogs;
  57. var FullnameFichierLog = System.IO.Path.Combine(directory, Filename(date));
  58. var log = "";
  59. if(File.Exists(FullnameFichierLog))
  60. log = TxtService.ExtractTextFromTxt(FullnameFichierLog);
  61. return log;
  62. }
  63. public static int LoadParametres()
  64. {
  65. try
  66. {
  67. if (File.Exists(NomFichierData))
  68. {
  69. string[] lignes = File.ReadAllLines(NomFichierData);
  70. if (lignes.Length > 0)
  71. NiveauEcriture = int.Parse(lignes[0]);
  72. }
  73. return NiveauEcriture;
  74. }
  75. catch(Exception ex)
  76. {
  77. LogError($"Erreur lors du chargement des paramètres de niveau d'écriture : {ex.Message}");
  78. NiveauEcriture = 0; // Par défaut, on remet à 0 en cas d'erreur
  79. return NiveauEcriture;
  80. }
  81. }
  82. public static bool SaveParametres(int selectedItem)
  83. {
  84. try
  85. {
  86. StringBuilder sb = new();
  87. sb.AppendLine(selectedItem.ToString());
  88. File.WriteAllText(NomFichierData, sb.ToString());
  89. NiveauEcriture = selectedItem;
  90. return true;
  91. }
  92. catch(Exception ex)
  93. {
  94. LogError($"Erreur lors de la sauvegarde des paramètres de niveau d'écriture : {ex.Message}");
  95. return false;
  96. }
  97. }
  98. #endregion
  99. #region Méthodes privées
  100. private static void Log(string level, string message)
  101. {
  102. var directory = FichiersInternesService.DossierLogs;
  103. var FullnameFichierLog = System.IO.Path.Combine(directory, Filename());
  104. if (!System.IO.Directory.Exists(directory))
  105. {
  106. System.IO.Directory.CreateDirectory(directory);
  107. }
  108. var ligneAdd = $"[{level}]\t[{GetCurrentTime()}]\t{message}";
  109. File.AppendAllText(FullnameFichierLog, ligneAdd + Environment.NewLine);
  110. }
  111. private static string GetCurrentTime()
  112. {
  113. return DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
  114. }
  115. private static string Filename(DateTime? date = null)
  116. {
  117. DateTime dateOnly = DateTime.Now;
  118. if (date.HasValue)
  119. dateOnly = date.Value;
  120. return $"LOG_{dateOnly.ToString("yyyy-MM-dd")}.log";
  121. }
  122. #endregion
  123. }
  124. }