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)));
}