LogSender.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. namespace MinicsConsole.Connector;
  2. public class LogSender(BasicInfo basicInfo) : SenderBase_SignalR, ILog
  3. {
  4. private ILog? _log;
  5. public string? Directory { get; internal set; }
  6. public string? FilePath { get; internal set; }
  7. private string? _FileName;
  8. bool ILog.Initialize(string fileName)
  9. {
  10. this._log ??= new Logger.Logger();
  11. _log.Initialize(fileName);
  12. this.Directory = _log.Directory;
  13. this._FileName = fileName;
  14. return true;
  15. }
  16. //Switch to new log file path and clean old files before basicInfo.DBKeepRange
  17. public bool CleanLog()
  18. {
  19. ILog log = new Logger.Logger();
  20. log.Initialize(_FileName!);
  21. ILog? oldLog = this._log;
  22. this._log = log;
  23. if (oldLog is null)
  24. return false;
  25. if (string.IsNullOrEmpty(oldLog.Directory) ||
  26. !DierctoryHelper.GetAllFiles(oldLog.Directory, out List<FileInfo>? files) ||
  27. files is null)
  28. goto Finallizer;
  29. foreach (FileInfo file in files)
  30. {
  31. if (file.CreationTime >= DateTime.Now.AddDays(-basicInfo.DBKeepRange))
  32. continue;
  33. try
  34. {
  35. File.Delete(file.FullName);
  36. }
  37. catch
  38. {
  39. }
  40. }
  41. Finallizer:
  42. oldLog?.Dispose();
  43. this.Directory = this._log.Directory;
  44. return true;
  45. }
  46. bool ILog.Debug(string message, DateTime? dateTime)
  47. {
  48. dateTime ??= DateTime.Now;
  49. _log?.Debug(message, dateTime);
  50. return this.SendAll("Debug", message, dateTime);
  51. }
  52. bool ILog.Error(string message, DateTime? dateTime)
  53. {
  54. dateTime ??= DateTime.Now;
  55. _log?.Error(message, dateTime);
  56. return this.SendAll("Error", message, dateTime);
  57. }
  58. bool ILog.Fatal(string message, DateTime? dateTime)
  59. {
  60. dateTime ??= DateTime.Now;
  61. _log?.Fatal(message, dateTime);
  62. MessageBox.Show(message, "Fatal", MessageBoxButton.OK, MessageBoxImage.Stop);
  63. return this.SendAll("Fatal", message, dateTime);
  64. }
  65. bool ILog.Info(string message, DateTime? dateTime)
  66. {
  67. dateTime ??= DateTime.Now;
  68. _log?.Info(message, dateTime);
  69. return this.SendAll("Info", message, dateTime);
  70. }
  71. bool ILog.Warning(string message, DateTime? dateTime)
  72. {
  73. dateTime ??= DateTime.Now;
  74. _log?.Warning(message, dateTime);
  75. return this.SendAll("Warning", message, dateTime);
  76. }
  77. public void Dispose()
  78. {
  79. this._log?.Dispose();
  80. }
  81. }