Особенно в библиотеке классов, вы должны использовать фасады журналирования, такие как Microsoft.Extensions.Logging, а не конкретного поставщика журналирования, такого как NLog.Затем вы просто внедряете фасады регистрации в классы вашей библиотеки классов, например:
public class Foo
{
private readonly ILogger _logger;
public Foo(ILogger<Foo> logger)
{
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
}
...
}
Внутри класса, затем вы используете внедренный экземпляр регистрации, установленный в _logger
ivar.Затем в вашем реальном проекте, который использует этот класс, вы устанавливаете своего провайдера регистрации и регистрируете соответствующие услуги.Таким образом, каждое отдельное приложение контролирует своих собственных провайдеров журналов, а классы вашей библиотеки классов просто используют абстракцию.