using System.Collections.Concurrent; using Microsoft.Extensions.Logging; namespace BuildFlow.Monitoring.Tests.Sync; /// 记录结构化日志格式化后的级别和文本,供安全断言使用。 public sealed class RecordingLogger : ILogger { private readonly ConcurrentQueue<(LogLevel Level, string Message)> _entries = new(); /// 当前已记录的所有日志。 public IReadOnlyCollection<(LogLevel Level, string Message)> Entries => _entries.ToArray(); public IDisposable? BeginScope(TState state) where TState : notnull => null; public bool IsEnabled(LogLevel logLevel) => true; public void Log( LogLevel logLevel, EventId eventId, TState state, Exception? exception, Func formatter) => _entries.Enqueue((logLevel, formatter(state, exception))); }