RequestLogger.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using LJLib.Tools.File;
  2. using System;
  3. using System.Diagnostics;
  4. using System.IO;
  5. using System.Threading;
  6. namespace LJLib.TextLog
  7. {
  8. internal class RequestLogger : ILogger
  9. {
  10. private readonly string _logDir;
  11. private readonly object _syncRoot = new object();
  12. public RequestLogger()
  13. {
  14. _logDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log");
  15. if (!Directory.Exists(_logDir)) Directory.CreateDirectory(_logDir);
  16. }
  17. /// <summary>
  18. /// 获取今天的日志文件全路径
  19. /// </summary>
  20. private string GetTodayLogFile()
  21. {
  22. string fileName = $"REQUEST_{DateTime.Now:yyyyMMdd}.log";
  23. return Path.Combine(_logDir, fileName);
  24. }
  25. /// <summary>
  26. /// 写入日志
  27. /// </summary>
  28. public void WriteLog(string msg)
  29. {
  30. try
  31. {
  32. lock (_syncRoot)
  33. {
  34. string filePath = GetTodayLogFile();
  35. using (StreamWriter sw = new StreamWriter(filePath, true))
  36. {
  37. sw.WriteLine("====================================================================");
  38. sw.WriteLine($"时间: {DateTime.Now:yyyy-MM-dd HH:mm:ss}");
  39. sw.WriteLine("--------------------------------------------------------------------");
  40. sw.WriteLine(msg);
  41. sw.WriteLine("====================================================================");
  42. sw.WriteLine();
  43. }
  44. }
  45. }
  46. catch(Exception ex)
  47. {
  48. // 这里可考虑写到系统事件日志或忽略
  49. Trace.Write(ex);
  50. }
  51. }
  52. }
  53. }