EvHttpClientLogger.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Windows;
  8. namespace AwInitilizer.Assist
  9. {
  10. public class EvHttpClientLogger
  11. {
  12. public static EvHttpClientLogger Instance => _Instance;
  13. private static EvHttpClientLogger _Instance = new EvHttpClientLogger();
  14. private EvHttpClientLogger()
  15. {
  16. if (!Directory.Exists(FolderName))
  17. {
  18. Directory.CreateDirectory(FolderName);
  19. }
  20. }
  21. private const string FolderName = "ApiLog";
  22. private const int MaxLogCnt = 10;
  23. private string LogFileName = null;
  24. internal void StartNewLog(string name)
  25. {
  26. TryRemoveOneLog();
  27. LogFileName = name + DateTime.Now.ToString("yyyyMMddHHmmssffff") + ".txt";
  28. }
  29. internal void Log(string mesasage)
  30. {
  31. if (string.IsNullOrEmpty(LogFileName))
  32. {
  33. return;
  34. }
  35. File.AppendAllText(Path.Combine(FolderName, LogFileName), mesasage + Environment.NewLine);
  36. }
  37. private void TryRemoveOneLog()
  38. {
  39. var files = Directory.GetFiles(FolderName).ToList();
  40. if (files.Count < MaxLogCnt)
  41. {
  42. return;
  43. }
  44. List<FileInfo> fileInfos = new List<FileInfo>();
  45. foreach (var file in files) {
  46. fileInfos.Add(new FileInfo(file));
  47. }
  48. var candidateFile = fileInfos.OrderBy(x => x.LastWriteTimeUtc).First();
  49. candidateFile.Delete();
  50. }
  51. }
  52. }