The Microsoft Extension Logging (MEL) uses the generic ILogger<T>
, as a trick to create ILogger
imbued with the type-name.
But instead of doing this:
public class MyClass
{
private readonly ILogger _logger; // Notice no generic
public MyClass(ILogger<MyClass> logger)
{
_logger = logger;
_logger.LogInformation("Hello");
}
}
Then one can ask the Microsoft Dependency Injection to provide the ILoggerFactory
as constuctor parameter:
public class MyClass
{
private readonly ILogger _logger; // Notice no generic
public MyClass(ILoggerFactory loggerFactory)
{
_logger = loggerFactory.CreateLogger(GetType().ToString()); // Performance hit
_logger.LogInformation("Hello");
var otherLogger = loggerFactory.CreateLogger("LogName"); // Same as LogManager.GetLogger("logname")
otherLogger.LogInformation("Hello Again");
}
}