.NET-HILFE

C# Logging (Wie es für Entwickler funktioniert)

Veröffentlicht 29. April 2024
Teilen Sie:

Protokollierung ist ein wesentlicher Bestandteil der Softwareentwicklung, insbesondere in Sprachen wie C#. Es hilft Entwicklern, Ereignisse zu verfolgen, die während der Ausführung eines Programms auftreten, und erleichtert so das Verständnis seines Verhaltens und die Diagnose von Problemen. Dieser Leitfaden behandelt alle Aspekte der C#-Protokollierung und IronPDFvon grundlegenden Konzepten bis hin zu fortgeschrittenen Protokollierungskonfigurationen und -werkzeugen. Es bietet ein umfassendes Verständnis und Kontrolle über die Protokollierungskonfiguration in Ihren Anwendungen.

Verstehen der Protokollierung in C#;

Im Kern geht es bei der Protokollierung in C# um die Aufzeichnung von Informationen über die Software während der Ausführung. Diese Aufzeichnungen oder Protokollmeldungen werden in Protokolldateien oder anderen Medien gespeichert und können Daten wie Fehlermeldungen, Informationen über den Zustand der Software oder Debug-Meldungen enthalten. Der Zweck der Protokollierung besteht darin, Informationen über den Betrieb der Anwendung in einem dauerhaften Format zu erfassen. Diese Informationen sind von unschätzbarem Wert für die Fehlersuche, die Überwachung der Softwareleistung und um sicherzustellen, dass sich die Anwendung wie erwartet verhält. Dazu gehören Konfigurationsdatei, Protokollierungs-API, Protokollierungskonfiguration, strukturierte Protokolle und Protokollausnahmen.

Schreiben von Log-Meldungen

Um mit der Protokollierung in C# zu beginnen, müssen Entwickler innerhalb ihrer Anwendung Protokollnachrichten schreiben. Dies geschieht durch die Verwendung eines Protokollierungsrahmens oder einer API. In C# ist eine beliebte Wahl die Schnittstelle ILogger von Microsoft, die im Namespace Microsoft.Extensions.Logging verfügbar ist. Diese Schnittstelle bietet eine einfache Möglichkeit, Daten auf verschiedenen Ebenen der Wichtigkeit zu protokollieren, die als Protokollebenen bezeichnet werden. Diese Stufen, einschließlich Information, Debug und Fehler, helfen dabei, die Protokollausgabe nach dem Schweregrad der aufgezeichneten Meldungen zu kategorisieren und zu filtern.

using Microsoft.Extensions.Logging;
public class Program
{
    static void Main(string [] args)
    {
        ILogger logger = LoggerFactory.Create(builder => 
        {
            builder.AddConsole();
        }).CreateLogger<Program>();
        logger.LogInformation("This is an information log message");
        logger.LogError("This is an error log message");
    }
}
using Microsoft.Extensions.Logging;
public class Program
{
    static void Main(string [] args)
    {
        ILogger logger = LoggerFactory.Create(builder => 
        {
            builder.AddConsole();
        }).CreateLogger<Program>();
        logger.LogInformation("This is an information log message");
        logger.LogError("This is an error log message");
    }
}
Imports Microsoft.Extensions.Logging
Public Class Program
	Shared Sub Main(ByVal args() As String)
		Dim logger As ILogger = LoggerFactory.Create(Sub(builder)
			builder.AddConsole()
		End Sub).CreateLogger<Program>()
		logger.LogInformation("This is an information log message")
		logger.LogError("This is an error log message")
	End Sub
End Class
VB   C#

Im obigen Beispiel ist das Objekt ILogger mit dem Namen logger so konfiguriert, dass es Protokollmeldungen auf der Konsole ausgibt. Diese Einrichtung ist einfach, aber grundlegend, um zu verstehen, wie Protokollmeldungen erzeugt und angezeigt werden.

C# Protokollierung (Wie es für Entwickler funktioniert): Abbildung 1 - Beispiel einer Konsolenausgabe mit Protokollmeldungen

Protokolldateien und Anbieter

In einer realen Anwendung müssen Sie häufig Protokollmeldungen in einer Datei oder einem anderen Speichersystem zur späteren Überprüfung speichern. Hier kommen die Logging-Anbieter ins Spiel. Provider sind Komponenten des Logging-Frameworks, die die Ausgabe von Logdaten an verschiedene Ziele wie Dateien, Datenbanken oder externe Dienste übernehmen.

Um beispielsweise einen Logger so zu konfigurieren, dass er Meldungen in eine Datei schreibt, können Sie einen dateibasierten Anbieter wie FileLoggerProvider verwenden. Dazu muss die Konfigurationsdatei der Anwendung geändert werden (häufig appsettings.json in .NET-Anwendungen) um Details wie den Pfad der Protokolldatei und die minimale Protokollstufe anzugeben.

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning"
    },
    "File": {
      "Path": "logs/myapp.log"
    }
  }
}
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning"
    },
    "File": {
      "Path": "logs/myapp.log"
    }
  }
}
"Logging":
  If True Then
	"LogLevel":
	If True Then
	  "Default": "Information", "Microsoft": "Warning"
	End If
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'   , "File":
'	{
'	  "Path": "logs/myapp.log"
'	}
  End If
VB   C#

Die Konfiguration legt fest, dass alle Standardprotokolle auf der Ebene "Information" erfolgen sollen, die Microsoft-Bibliotheken jedoch nur Warnungen und mehr protokollieren sollen. Außerdem wird die Protokollierungsausgabe in eine Protokolldatei namens myapp.log im Verzeichnis logs geleitet.

Erweiterte Protokollierungstechniken

C# unterstützt nicht nur einfache Log-Meldungen, sondern auch strukturierte Logs, die anstelle von einfachem Text auch strukturierte Daten enthalten können. Die strukturierte Protokollierung erleichtert die Suche und Analyse von Protokolldaten, da jede Kontextinformation in einem eigenen Feld gespeichert wird.

logger.LogDebug("Processing order {OrderId} at {Timestamp}", orderId, DateTime.UtcNow);
logger.LogDebug("Processing order {OrderId} at {Timestamp}", orderId, DateTime.UtcNow);
logger.LogDebug("Processing order {OrderId} at {Timestamp}", orderId, DateTime.UtcNow)
VB   C#

In diesem Beispiel für ein strukturiertes Protokoll sind OrderId und Timestamp Platzhalter in der Nachrichtenvorlage, die mit den Werten von orderId bzw. DateTime.UtcNow gefüllt werden. Dies ist leistungsfähiger als die herkömmliche Protokollierung, da es eine einfachere Abfrage und Manipulation von Protokolldaten auf der Grundlage bestimmter Felder in jedem Protokolleintrag ermöglicht.

Integration mit externen Systemen

Die C#-Protokollierung kann erweitert werden, um externe Systeme wie SQL Server oder Windows Event Log zu integrieren, wodurch die Verwaltung und Analyse von Protokolldaten verbessert wird. Durch die Verwendung von spezialisierten Protokollierungsanbietern können Protokollmeldungen an diese Systeme weitergeleitet werden, wodurch robustere Funktionen für die Fehlerüberwachung und -behebung bereitgestellt werden.

builder.AddEventLog(new EventLogSettings
{
    SourceName = "MyApplication"
});
builder.AddEventLog(new EventLogSettings
{
    SourceName = "MyApplication"
});
builder.AddEventLog(New EventLogSettings With {.SourceName = "MyApplication"})
VB   C#

Dieser Konfigurationsausschnitt leitet die Protokollausgabe in das Windows-Ereignisprotokoll unter dem Quellnamen "MyApplication". Dies ist besonders nützlich für Anwendungen, die auf Windows-Servern laufen, wo das Ereignisprotokoll ein zentrales Werkzeug zur Überwachung von Software- und Systemmeldungen ist.

Integration von IronPDF mit C# Protokollierung

C#-Protokollierung (Wie es für Entwickler funktioniert): Abbildung 2 - IronPDF-Homepage

IronPDF ist eine .NET PDF-Bibliothek, die es Entwicklern ermöglicht, PDFs zu erstellen, zu bearbeiten und zu rendern. Sie konvertiert HTML zu PDF was eine häufige Voraussetzung für die Erstellung von Berichten, Rechnungen und anderen Dokumenttypen aus Webinhalten ist. IronPDF bietet eine umfassende Reihe von Funktionen für verschiedene PDF-bezogene Aufgaben, einschließlich der Bearbeitung von Text und Bildern, der Sicherung von Dokumenten und sogar der Extraktion von Inhalten.

Die Kombination von IronPDF mit C# Logging kann die Fehlerbehandlung und das Debugging bei der Arbeit mit PDF-Dateien verbessern. Durch die Integration der Protokollierung können Sie den Prozess der PDF-Generierung verfolgen und alle auftretenden Probleme oder Ausnahmen erfassen. Diese Integration ist besonders nützlich in Szenarien, in denen die PDF-Generierung ein kritischer Teil der Anwendungsfunktionalität ist, z. B. bei der dynamischen Berichterstellung auf der Grundlage von Benutzerdaten.

Code-Beispiel

Um IronPDF zusammen mit C# Logging zu verwenden, müssen Sie Logging-Aufrufe in Ihre PDF-Operationen einbauen. Das folgende Beispiel zeigt, wie Sie diese beiden Technologien in eine .NET-Anwendung integrieren können. In diesem Beispiel wird davon ausgegangen, dass Sie die Schnittstelle ILogger aus Microsoft.Extensions.Logging verwenden.

using IronPdf;
using Microsoft.Extensions.Logging;
using System;
public class PdfGenerator
{
    private readonly ILogger _logger;
    public PdfGenerator(ILogger<PdfGenerator> logger)
    {
        _logger = logger;
    }
    public void CreatePdfFromHtml(string htmlContent, string outputPath)
    {
        try
        {
            var renderer = new ChromePdfRenderer();
            var pdf = renderer.RenderHtmlAsPdf(htmlContent);
            pdf.SaveAs(outputPath);
            _logger.LogInformation("PDF created successfully at {OutputPath}", outputPath);
        }
        catch (Exception ex)
        {
            _logger.LogError(ex, "Error creating PDF from HTML");
        }
    }
}
// Usage
public class Program
{
    static void Main(string [] args)
    {
        License.LicenseKey = "License-Key";
        ILoggerFactory loggerFactory = LoggerFactory.Create(builder =>
        {
            builder.AddConsole(); // Works after adding the right package and using directive
        });
        ILogger<PdfGenerator> logger = loggerFactory.CreateLogger<PdfGenerator>(); // Correct type parameter
        PdfGenerator pdfGenerator = new PdfGenerator(logger);
        string htmlContent = "<h1>Hello, PDF!</h1><p>This is a simple PDF generated from HTML.</p>";
        string outputPath = "output.pdf";
        pdfGenerator.CreatePdfFromHtml(htmlContent, outputPath);
    }
}
using IronPdf;
using Microsoft.Extensions.Logging;
using System;
public class PdfGenerator
{
    private readonly ILogger _logger;
    public PdfGenerator(ILogger<PdfGenerator> logger)
    {
        _logger = logger;
    }
    public void CreatePdfFromHtml(string htmlContent, string outputPath)
    {
        try
        {
            var renderer = new ChromePdfRenderer();
            var pdf = renderer.RenderHtmlAsPdf(htmlContent);
            pdf.SaveAs(outputPath);
            _logger.LogInformation("PDF created successfully at {OutputPath}", outputPath);
        }
        catch (Exception ex)
        {
            _logger.LogError(ex, "Error creating PDF from HTML");
        }
    }
}
// Usage
public class Program
{
    static void Main(string [] args)
    {
        License.LicenseKey = "License-Key";
        ILoggerFactory loggerFactory = LoggerFactory.Create(builder =>
        {
            builder.AddConsole(); // Works after adding the right package and using directive
        });
        ILogger<PdfGenerator> logger = loggerFactory.CreateLogger<PdfGenerator>(); // Correct type parameter
        PdfGenerator pdfGenerator = new PdfGenerator(logger);
        string htmlContent = "<h1>Hello, PDF!</h1><p>This is a simple PDF generated from HTML.</p>";
        string outputPath = "output.pdf";
        pdfGenerator.CreatePdfFromHtml(htmlContent, outputPath);
    }
}
Imports IronPdf
Imports Microsoft.Extensions.Logging
Imports System
Public Class PdfGenerator
	Private ReadOnly _logger As ILogger
	Public Sub New(ByVal logger As ILogger(Of PdfGenerator))
		_logger = logger
	End Sub
	Public Sub CreatePdfFromHtml(ByVal htmlContent As String, ByVal outputPath As String)
		Try
			Dim renderer = New ChromePdfRenderer()
			Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
			pdf.SaveAs(outputPath)
			_logger.LogInformation("PDF created successfully at {OutputPath}", outputPath)
		Catch ex As Exception
			_logger.LogError(ex, "Error creating PDF from HTML")
		End Try
	End Sub
End Class
' Usage
Public Class Program
	Shared Sub Main(ByVal args() As String)
		License.LicenseKey = "License-Key"
		Dim loggerFactory As ILoggerFactory = LoggerFactory.Create(Sub(builder)
			builder.AddConsole() ' Works after adding the right package and using directive
		End Sub)
		Dim logger As ILogger(Of PdfGenerator) = loggerFactory.CreateLogger(Of PdfGenerator)() ' Correct type parameter
		Dim pdfGenerator As New PdfGenerator(logger)
		Dim htmlContent As String = "<h1>Hello, PDF!</h1><p>This is a simple PDF generated from HTML.</p>"
		Dim outputPath As String = "output.pdf"
		pdfGenerator.CreatePdfFromHtml(htmlContent, outputPath)
	End Sub
End Class
VB   C#

C#-Protokollierung (So funktioniert es für Entwickler): Abbildung 3 - Konsolenausgabe mit Info-Level-Protokollmeldungen nach der Integration mit IronPDF

Diese Einrichtung erleichtert nicht nur die Generierung von PDFs aus HTML, sondern stellt auch sicher, dass der Vorgang durch Protokolle gut dokumentiert wird, was die Wartung und Fehlersuche erleichtert. Die Integration der Protokollierung in IronPDF kann die Zuverlässigkeit und Nachvollziehbarkeit der PDF-Verarbeitungsfunktionen Ihrer Anwendung erheblich verbessern.

Schlussfolgerung

C# Protokollierung (Wie es für Entwickler funktioniert): Abbildung 4 - IronPDF-Lizenzierungsseite

Die Protokollierung in C# ist eine flexible und leistungsstarke Methode, um detaillierte Informationen über den Betrieb Ihrer Anwendung zu erfassen. Durch die Verwendung verschiedener Protokollierungsebenen, die Konfiguration verschiedener Anbieter und die Implementierung einer strukturierten Protokollierung können Entwickler ein umfassendes Protokollierungssystem erstellen, das die Wartbarkeit und Fehlersuche in ihren Anwendungen verbessert.

IronPDF bietet eine kostenloser Test beginnt bei 749 Dollar.

< PREVIOUS
C# Devart.Data.Oracle (Wie es für Entwickler funktioniert)
NÄCHSTES >
C# Round double to int (Wie es funktioniert für Entwickler)

Sind Sie bereit, loszulegen? Version: 2024.10 gerade veröffentlicht

Gratis NuGet-Download Downloads insgesamt: 11,308,499 Lizenzen anzeigen >