Unit testing ‐ Logging - Habilya/LearningCourseNotes GitHub Wiki

ILoggerAdapter.cs

namespace WatcherFileSystemGeneric.Logging;

public interface ILoggerAdapter<TType>
{
	void LogError(Exception? exception, string? message, params object?[] args);

	void LogInformation(string? message, params object?[] args);

	void LogWarning(string? message, params object?[] args);
}

LoggerAdapter.cs

using Microsoft.Extensions.Logging;

namespace WatcherFileSystemGeneric.Logging;

public class LoggerAdapter<TType> : ILoggerAdapter<TType>
{
	private readonly ILogger<TType> _logger;

	public LoggerAdapter(ILogger<TType> logger)
	{
		_logger = logger;
	}

	public void LogInformation(string? message, params object?[] args)
	{
		_logger.LogInformation(message, args);
	}

	public void LogWarning(string? message, params object?[] args)
	{
		_logger.LogWarning(message, args);
	}

	public void LogError(Exception? exception, string? message, params object?[] args)
	{
		_logger.LogError(exception, message, args);
	}
}

as dependency in container services.AddTransient(typeof(ILoggerAdapter<>), typeof(LoggerAdapter<>));

as dependency in dependant classes protected readonly ILoggerAdapter<GenericWatcherProcess> _logger;

⚠️ **GitHub.com Fallback** ⚠️