.NET-HILFE

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

Logging ist ein entscheidender 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 wird alle Aspekte des C#-Loggings und IronPDF für erweiterte PDF-Manipulationsfunktionen abdecken, von grundlegenden Konzepten bis hin zu fortgeschrittenen Logging-Konfigurationen und -Werkzeugen. Es bietet ein umfassendes Verständnis und Kontrolle über die Protokollierungskonfiguration in Ihren Anwendungen.

Verstehen von Logging 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 das ILogger-Interface von Microsoft, das im Microsoft.Extensions.Logging-Namensraum 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
$vbLabelText   $csharpLabel

Im obigen Beispiel ist das ILogger-Objekt namens logger so konfiguriert, dass es Protokollnachrichten an die Konsole ausgibt. Diese Einrichtung ist einfach, aber grundlegend, um zu verstehen, wie Protokollmeldungen erzeugt und angezeigt werden.

C# Logging (So funktioniert es für Entwickler): Abbildung 1 - Beispielhafte Konsolenausgabe mit Logmeldungen

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.

Zum Beispiel, um einen Logger zu konfigurieren, der Nachrichten in eine Datei schreibt, könnten Sie einen dateibasierten Anbieter wie FileLoggerProvider verwenden. Dies erfordert die Änderung der Konfigurationsdatei der Anwendung (oft appsettings.json in .NET-Anwendungen), um Details wie den Pfad der Protokolldatei und das minimale Protokollierungsniveau festzulegen.

{
  "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
$vbLabelText   $csharpLabel

Die Konfiguration legt fest, dass alle Standardprotokolle auf der Ebene "Information" erfolgen sollen, die Microsoft-Bibliotheken jedoch nur Warnungen und mehr protokollieren sollen. Es leitet auch die Protokollausgabe in eine Protokolldatei mit dem Namen myapp.log in einem logs-Verzeichnis.

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)
$vbLabelText   $csharpLabel

In diesem strukturierten Logbeispiel sind OrderId und Timestamp Platzhalter innerhalb der Nachrichtenvorlage, die mit den Werten von orderId und DateTime.UtcNow entsprechend 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"})
$vbLabelText   $csharpLabel

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&num;

Protokollierung

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

Erfahren Sie mehr über IronPDF für die HTML-zu-PDF-Konvertierung ist eine .NET PDF-Bibliothek, die es Entwicklern ermöglicht, PDFs zu erstellen, zu manipulieren und darzustellen. Sie konvertiert HTML in PDF, was eine häufige Anforderung 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. Dieses Beispiel geht davon aus, dass Sie die ILogger-Schnittstelle von 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
$vbLabelText   $csharpLabel

C# Logging (Wie es für Entwickler funktioniert): Abbildung 3 - Konsolenausgabe mit Lognachrichten auf Info-Ebene nach 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# Logging (So funktioniert es für Entwickler): 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.

Testen Sie IronPDF mit einer kostenlosen Testversion, beginnend bei $749.

Chipego
Software-Ingenieur
Chipego hat eine natürliche Fähigkeit zum Zuhören, die ihm hilft, Kundenprobleme zu verstehen und intelligente Lösungen anzubieten. Er trat dem Iron Software-Team 2023 bei, nachdem er einen Bachelor of Science in Informationstechnologie erworben hatte. IronPDF und IronOCR sind die beiden Produkte, auf die sich Chipego konzentriert hat, aber sein Wissen über alle Produkte wächst täglich, da er neue Wege findet, Kunden zu unterstützen. Er genießt die Zusammenarbeit bei Iron Software, da Teammitglieder aus dem gesamten Unternehmen ihre unterschiedlichen Erfahrungen einbringen und so zu effektiven, innovativen Lösungen beitragen. Wenn Chipego nicht an seinem Schreibtisch sitzt, kann man ihn oft bei einem guten Buch oder beim Fußballspielen antreffen.
< PREVIOUS
C# Devart.Data.Oracle (Wie es für Entwickler funktioniert)
NÄCHSTES >
C# Round double to int (Wie es funktioniert für Entwickler)