Günlüğü DI
için aşağıdaki hizmetleri ekler:
public class Foo
{
private ILogger _logger;
public Foo(ILogger<Foo> logger)
{
_logger = logger;
}
}
ama logger
boş olacak şekilde, aşağıdaki çalışmıyor
ve Logger<>
, DI'den ILoggerFactory
'a bağlıdır.
İkinci senaryonuz için, ILogger yerine ILoggerFactory'yi enjekte etmeniz gerekir. @KiranChalla söylediği gibi LoggingServiceCollectionExtensions
ILogger<>
kayıtlı olduğu ILogger
(see source code) den ILogger<>
devralır
public interface ILogger<out TCategoryName> : ILogger
{
}
Ama (değil ILogger
) böylece ikinci senaryosu çalışmıyor çünkü
public Foo(ILoggerFactory loggerFactory)
{
_logger = loggerFactory.CreateLogger("logger name here");
}