mirror of
https://github.com/ldqk/Masuit.Tools.git
synced 2026-10-27 03:14:14 +08:00
159 lines
5.0 KiB
C#
159 lines
5.0 KiB
C#
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);
|
|
}
|
|
} |