using Microsoft.Extensions.Logging; namespace ZB.MOM.WW.OtOpcUa.Driver.S7.Tests; /// An that records (level, message) pairs. internal sealed class CapturingS7Logger : ILogger { private readonly List<(LogLevel Level, string Message)> _entries = []; /// A snapshot of every entry logged so far. public IReadOnlyList<(LogLevel Level, string Message)> Entries { get { lock (_entries) return [.. _entries]; } } /// The Warning messages logged so far. public IReadOnlyList Warnings => [.. Entries.Where(e => e.Level == LogLevel.Warning).Select(e => e.Message)]; /// 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) { lock (_entries) _entries.Add((logLevel, formatter(state, exception))); } }