123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- using System;
- using System.IO;
- using System.Linq;
- using System.Threading;
- using Masuit.Tools.Logging;
- using Xunit;
- namespace Masuit.Tools.Abstractions.Test.Logging;
- public class LogManagerTests
- {
- private readonly string _logDirectory;
- public LogManagerTests()
- {
- _logDirectory = Path.Combine(Path.GetTempPath(), "logs");
- LogManager.LogDirectory = _logDirectory;
- if (Directory.Exists(_logDirectory))
- {
- Directory.Delete(_logDirectory, true);
- }
- Directory.CreateDirectory(_logDirectory);
- }
- [Fact]
- public void Info_ShouldWriteInfoLog()
- {
- LogManager.Info("Test info message");
- Thread.Sleep(2000); // 等待日志写入
- var logFile = Directory.GetFiles(_logDirectory).FirstOrDefault();
- Assert.NotNull(logFile);
- var logContent = File.ReadAllText(logFile);
- Assert.Contains("INFO", logContent);
- Assert.Contains("Test info message", logContent);
- }
- [Fact]
- public void Info_WithSource_ShouldWriteInfoLog()
- {
- LogManager.Info("TestSource", "Test info message");
- Thread.Sleep(2000); // 等待日志写入
- var logFile = Directory.GetFiles(_logDirectory).FirstOrDefault();
- Assert.NotNull(logFile);
- var logContent = File.ReadAllText(logFile);
- Assert.Contains("INFO", logContent);
- Assert.Contains("TestSource", logContent);
- Assert.Contains("Test info message", logContent);
- }
- [Fact]
- public void Debug_ShouldWriteDebugLog()
- {
- LogManager.Debug("Test debug message");
- Thread.Sleep(2000); // 等待日志写入
- var logFile = Directory.GetFiles(_logDirectory).FirstOrDefault();
- Assert.NotNull(logFile);
- var logContent = File.ReadAllText(logFile);
- Assert.Contains("DEBUG", logContent);
- Assert.Contains("Test debug message", logContent);
- }
- [Fact]
- public void Debug_WithSource_ShouldWriteDebugLog()
- {
- LogManager.Debug("TestSource", "Test debug message");
- Thread.Sleep(2000); // 等待日志写入
- var logFile = Directory.GetFiles(_logDirectory).FirstOrDefault();
- Assert.NotNull(logFile);
- var logContent = File.ReadAllText(logFile);
- Assert.Contains("DEBUG", logContent);
- Assert.Contains("TestSource", logContent);
- Assert.Contains("Test debug message", logContent);
- }
- [Fact]
- public void Error_ShouldWriteErrorLog()
- {
- var exception = new Exception("Test error message");
- LogManager.Error(exception);
- Thread.Sleep(2000); // 等待日志写入
- var logFile = Directory.GetFiles(_logDirectory).FirstOrDefault();
- Assert.NotNull(logFile);
- var logContent = File.ReadAllText(logFile);
- Assert.Contains("ERROR", logContent);
- Assert.Contains("Test error message", logContent);
- }
- [Fact]
- public void Error_WithSource_ShouldWriteErrorLog()
- {
- var exception = new Exception("Test error message");
- LogManager.Error("TestSource", exception);
- Thread.Sleep(2000); // 等待日志写入
- var logFile = Directory.GetFiles(_logDirectory).FirstOrDefault();
- Assert.NotNull(logFile);
- var logContent = File.ReadAllText(logFile);
- Assert.Contains("ERROR", logContent);
- Assert.Contains("TestSource", logContent);
- Assert.Contains("Test error message", logContent);
- }
- [Fact]
- public void Fatal_ShouldWriteFatalLog()
- {
- var exception = new Exception("Test fatal message");
- LogManager.Fatal(exception);
- Thread.Sleep(2000); // 等待日志写入
- var logFile = Directory.GetFiles(_logDirectory).FirstOrDefault();
- Assert.NotNull(logFile);
- var logContent = File.ReadAllText(logFile);
- Assert.Contains("FATAL", logContent);
- Assert.Contains("Test fatal message", logContent);
- }
- [Fact]
- public void Fatal_WithSource_ShouldWriteFatalLog()
- {
- var exception = new Exception("Test fatal message");
- LogManager.Fatal("TestSource", exception);
- Thread.Sleep(2000); // 等待日志写入
- var logFile = Directory.GetFiles(_logDirectory).FirstOrDefault();
- Assert.NotNull(logFile);
- var logContent = File.ReadAllText(logFile);
- Assert.Contains("FATAL", logContent);
- Assert.Contains("TestSource", logContent);
- Assert.Contains("Test fatal message", logContent);
- }
- [Fact]
- public void LogDirectory_ShouldSetAndGetLogDirectory()
- {
- var customLogDirectory = Path.Combine(Path.GetTempPath(), "custom_logs");
- LogManager.LogDirectory = customLogDirectory;
- Assert.Equal(customLogDirectory, LogManager.LogDirectory);
- }
- [Fact]
- public void Event_ShouldTriggerOnLog()
- {
- var eventTriggered = false;
- LogManager.Event += log => eventTriggered = true;
- LogManager.Info("Test info message");
- Thread.Sleep(2000); // 等待日志写入
- Assert.True(eventTriggered);
- }
- }
|