1
1

LogManagerTests.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. using System;
  2. using System.IO;
  3. using System.Linq;
  4. using System.Threading;
  5. using Masuit.Tools.Logging;
  6. using Xunit;
  7. namespace Masuit.Tools.Abstractions.Test.Logging;
  8. public class LogManagerTests
  9. {
  10. private readonly string _logDirectory;
  11. public LogManagerTests()
  12. {
  13. _logDirectory = Path.Combine(Path.GetTempPath(), "logs");
  14. LogManager.LogDirectory = _logDirectory;
  15. if (Directory.Exists(_logDirectory))
  16. {
  17. Directory.Delete(_logDirectory, true);
  18. }
  19. Directory.CreateDirectory(_logDirectory);
  20. }
  21. [Fact]
  22. public void Info_ShouldWriteInfoLog()
  23. {
  24. LogManager.Info("Test info message");
  25. Thread.Sleep(2000); // 等待日志写入
  26. var logFile = Directory.GetFiles(_logDirectory).FirstOrDefault();
  27. Assert.NotNull(logFile);
  28. var logContent = File.ReadAllText(logFile);
  29. Assert.Contains("INFO", logContent);
  30. Assert.Contains("Test info message", logContent);
  31. }
  32. [Fact]
  33. public void Info_WithSource_ShouldWriteInfoLog()
  34. {
  35. LogManager.Info("TestSource", "Test info message");
  36. Thread.Sleep(2000); // 等待日志写入
  37. var logFile = Directory.GetFiles(_logDirectory).FirstOrDefault();
  38. Assert.NotNull(logFile);
  39. var logContent = File.ReadAllText(logFile);
  40. Assert.Contains("INFO", logContent);
  41. Assert.Contains("TestSource", logContent);
  42. Assert.Contains("Test info message", logContent);
  43. }
  44. [Fact]
  45. public void Debug_ShouldWriteDebugLog()
  46. {
  47. LogManager.Debug("Test debug message");
  48. Thread.Sleep(2000); // 等待日志写入
  49. var logFile = Directory.GetFiles(_logDirectory).FirstOrDefault();
  50. Assert.NotNull(logFile);
  51. var logContent = File.ReadAllText(logFile);
  52. Assert.Contains("DEBUG", logContent);
  53. Assert.Contains("Test debug message", logContent);
  54. }
  55. [Fact]
  56. public void Debug_WithSource_ShouldWriteDebugLog()
  57. {
  58. LogManager.Debug("TestSource", "Test debug message");
  59. Thread.Sleep(2000); // 等待日志写入
  60. var logFile = Directory.GetFiles(_logDirectory).FirstOrDefault();
  61. Assert.NotNull(logFile);
  62. var logContent = File.ReadAllText(logFile);
  63. Assert.Contains("DEBUG", logContent);
  64. Assert.Contains("TestSource", logContent);
  65. Assert.Contains("Test debug message", logContent);
  66. }
  67. [Fact]
  68. public void Error_ShouldWriteErrorLog()
  69. {
  70. var exception = new Exception("Test error message");
  71. LogManager.Error(exception);
  72. Thread.Sleep(2000); // 等待日志写入
  73. var logFile = Directory.GetFiles(_logDirectory).FirstOrDefault();
  74. Assert.NotNull(logFile);
  75. var logContent = File.ReadAllText(logFile);
  76. Assert.Contains("ERROR", logContent);
  77. Assert.Contains("Test error message", logContent);
  78. }
  79. [Fact]
  80. public void Error_WithSource_ShouldWriteErrorLog()
  81. {
  82. var exception = new Exception("Test error message");
  83. LogManager.Error("TestSource", exception);
  84. Thread.Sleep(2000); // 等待日志写入
  85. var logFile = Directory.GetFiles(_logDirectory).FirstOrDefault();
  86. Assert.NotNull(logFile);
  87. var logContent = File.ReadAllText(logFile);
  88. Assert.Contains("ERROR", logContent);
  89. Assert.Contains("TestSource", logContent);
  90. Assert.Contains("Test error message", logContent);
  91. }
  92. [Fact]
  93. public void Fatal_ShouldWriteFatalLog()
  94. {
  95. var exception = new Exception("Test fatal message");
  96. LogManager.Fatal(exception);
  97. Thread.Sleep(2000); // 等待日志写入
  98. var logFile = Directory.GetFiles(_logDirectory).FirstOrDefault();
  99. Assert.NotNull(logFile);
  100. var logContent = File.ReadAllText(logFile);
  101. Assert.Contains("FATAL", logContent);
  102. Assert.Contains("Test fatal message", logContent);
  103. }
  104. [Fact]
  105. public void Fatal_WithSource_ShouldWriteFatalLog()
  106. {
  107. var exception = new Exception("Test fatal message");
  108. LogManager.Fatal("TestSource", exception);
  109. Thread.Sleep(2000); // 等待日志写入
  110. var logFile = Directory.GetFiles(_logDirectory).FirstOrDefault();
  111. Assert.NotNull(logFile);
  112. var logContent = File.ReadAllText(logFile);
  113. Assert.Contains("FATAL", logContent);
  114. Assert.Contains("TestSource", logContent);
  115. Assert.Contains("Test fatal message", logContent);
  116. }
  117. [Fact]
  118. public void LogDirectory_ShouldSetAndGetLogDirectory()
  119. {
  120. var customLogDirectory = Path.Combine(Path.GetTempPath(), "custom_logs");
  121. LogManager.LogDirectory = customLogDirectory;
  122. Assert.Equal(customLogDirectory, LogManager.LogDirectory);
  123. }
  124. [Fact]
  125. public void Event_ShouldTriggerOnLog()
  126. {
  127. var eventTriggered = false;
  128. LogManager.Event += log => eventTriggered = true;
  129. LogManager.Info("Test info message");
  130. Thread.Sleep(2000); // 等待日志写入
  131. Assert.True(eventTriggered);
  132. }
  133. }