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