Mit NLog können Sie Folgendes tun:
Code: Select all
public class MyClass
{
private static readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger();
public void foo()
{
Logger.Info("foo");
}
}
Aber mit Microsoft.Extensions.Logging sieht der Code eher so aus:
Code: Select all
public class MyClass
{
private readonly Ilogger Logger;
public MyClass(ILogger logger)
{
Logger = logger;
}
public void foo()
{
Logger.LogInformation("foo");
}
}
OK, kein Problem, ich kann einen von einer ILoggerFactory bekommen.
Jetzt brauche ich eine ILoggerFactory.
- Wo bekomme ich eine ILoggerFactory? Ich erstelle einfach eine globale für meine Bibliothek?
- Wie konfiguriert der Client die Factory, um den von ihm gewünschten ILoggerProvider hinzuzufügen?
- Wird die ILoggerFactory automatisch mit den richtigen Anbietern konfiguriert, wenn der Client ihre Konfiguration korrekt durchgeführt hat?
Die Abhängigkeitsinjektion im Konstruktor sieht gut aus, wenn Sie sich in einer ASP.Net Core-App oder einem Dienst befinden, aber eine allgemeine Bibliothek wünschen, die in einer Konsolen-App oder einer WinForm/WPF-Anwendung verwendet werden könnte?
- Was passiert, wenn die Clientbibliothek keinen generischen Host hat oder keine Abhängigkeitsinjektion verwendet?
Code: Select all
//Client code
var myClass = new MyClass(); //with NLog
var myClass = new MyClass(loggerFactory.CreateLogger());
Verpasse ich etwas oder sieht Microsoft.Extensions.Logging für die allgemeine Bibliothek schrecklich aus? Haben Sie ein Codebeispiel für ein Projekt dieser Art mit Microsoft.Extensions.Logging?
Vielen Dank
Mobile version