
NLog C# (Jak to działa dla programistów)
Rejestrowanie jest istotnym aspektem tworzenia oprogramowania. Pomaga programistom śledzić zachowanie ich aplikacji, rozwiązywać problemy i uzyskać wgląd w to, jak ich kod działa w różnych środowiskach. NLog to popularny framework do logowania dla języka C#, który ułatwia wdrażanie solidnego i elastycznego logowania w aplikacjach. W tym kompleksowym przewodniku i samouczku zgłębimy świat NLog w języku C#.
Czym jest NLog?
NLog to bezpłatna biblioteka logowania typu open source przeznaczona dla aplikacji .NET i .NET Core. Zapewnia elastyczny i wysoce konfigurowalny sposób rejestrowania komunikatów w aplikacji. NLog to szeroko stosowana, bezpłatna platforma do logowania w ekosystemie .NET ze względu na swoją wydajność, rozszerzalność i łatwość użytkowania.
Pierwsze kroki z NLog
Możemy używać NLog w aplikacjach internetowych ASP.NET, interfejsach API ASP.NET WEB, aplikacjach Windows Form, aplikacjach ASP.NET MVC lub dowolnym innym rodzaju, w zależności od naszych potrzeb. Wykorzystamy aplikację konsolową, aby zademonstrować wszystkie przypadki użycia.
Zainstaluj pakiet NuGet NLog
Aby rozpocząć pracę z NLog, musisz zainstalować pakiet NLog NuGet w swoim projekcie. Można to zrobić za pomocą menedżera pakietów NuGet w Visual Studio, wykonując następujące kroki:
- W menu "Narzędzia" wybierz "Menedżer pakietów NuGet", a następnie wybierz "Zarządzaj pakietami NuGet dla rozwiązania".
- Można też kliknąć prawym przyciskiem myszy na swój projekt w Eksploratorze rozwiązań, wybrać opcję "Zarządzaj pakietami NuGet" i kliknąć "Przeglądaj".
- W oknie NuGet Package Manager kliknij kartę "Browse" (Przeglądaj) i w polu wyszukiwania wpisz "NLog".
- W wynikach wyszukiwania powinno pojawić się pakiet NLog. Kliknij, aby zaznaczyć.
- Po prawej stronie okna NuGet Package Manager znajduje się lista projektów w Twoim rozwiązaniu. Wybierz projekt(y), w których chcesz zainstalować NLog.
- Wybierz żądaną wersję pakietu NLog z listy rozwijanej wersji. W razie potrzeby można wybrać najnowszą stabilną wersję lub konkretną wersję.
- Po wybraniu projektu (projektów) i wersji kliknij przycisk "Zainstaluj", aby rozpocząć proces instalacji.
Menedżer pakietów NuGet pobierze i zainstaluje NLog oraz wszelkie zależności. Postęp tłumaczenia będzie widoczny w oknie wyników.
NLog został pomyślnie zainstalowany w projekcie i można zacząć używać go do rejestrowania w kodzie C#.
Utwórz plik konfiguracyjny NLog
Aby utworzyć plik konfiguracyjny NLog (zwykle o nazwie nlog.config), można wykonać następujące kroki. Ten plik konfiguracyjny określa, jak NLog powinien działać w Twojej aplikacji, w tym miejsca docelowe logów, renderery układów i reguły.
W projekcie kliknij prawym przyciskiem myszy projekt lub folder, w którym chcesz utworzyć plik konfiguracyjny.
- Wybierz "Dodaj" > "Nowy element..."
- W oknie dialogowym "Dodaj nowy element" wyszukaj "Plik XML" lub "XML" i wybierz go.
- Nazwij plik nlog.config i kliknij przycisk "Dodaj".

- Otwórz nowo utworzony plik nlog.config w edytorze tekstowym lub edytorze XML.
- Dodaj następującą konfigurację do pliku NLog.XML. Poniżej znajduje się podstawowy przykład konfiguracji NLog, która rejestruje komunikaty w konsoli. Możesz dostosować ten plik konfiguracyjny do swoich potrzeb:
Plik konfiguracyjny
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!-- Define targets -->
<targets>
<!-- Log to a console -->
<target name="console" xsi:type="Console" layout="${longdate}|${message}"/>
</targets>
<!-- Define rules -->
<rules>
<!-- All messages with a minimum log level of Debug or higher are written to the Console -->
<logger name="*" minlevel="Debug" writeTo="console" />
</rules>
</nlog>
W swoim kodzie C# upewnij się, że ładujesz konfigurację NLog z pliku nlog.config. Zwykle robi się to w kodzie startowym aplikacji, na przykład w ASP.NET Core Startup.cs (dla wersji .NET tej samej lub starszej niż .NET 5), pliku program.cs (dla .NET 6 lub nowszej wersji), lub w metodzie Main aplikacji konsolowej:
using NLog;
internal class Program
{
// Create an instance of the Logger
private static Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
// Log a debug message
logger.Debug("This is a Debug Message");
// Pause the console for viewing output
Console.Read();
}
}Imports NLog
Friend Class Program
' Create an instance of the Logger
Private Shared logger As Logger = LogManager.GetCurrentClassLogger()
Shared Sub Main(args As String())
' Log a debug message
logger.Debug("This is a Debug Message")
' Pause the console for viewing output
Console.Read()
End Sub
End ClassWynik działania powyższego programu jest następujący:

W tym przykładzie tworzymy instancję klasy Logger i używamy jej do rejestrowania komunikatów na poziomie debugowania. Przyjrzyjmy się poziomom śledzenia obsługiwanym przez NLog.
Poziomy logowania
NLog obsługuje kilka poziomów logowania, z których każdy ma swoje znaczenie:
- Śledzenie: Najbardziej szczegółowy poziom, zazwyczaj używany do celów diagnostycznych.
- Debug: Służy do wyświetlania informacji dotyczących debugowania, które mogą być pomocne podczas tworzenia oprogramowania.
- Informacje: Ogólne informacje na temat działania aplikacji.
- Ostrzeżenie: Wskazuje na potencjalny problem, który nie zakłóca działania aplikacji.
- Błąd: Wskazuje na niepowodzenie, które należy zbadać, ale niekoniecznie powoduje awarię aplikacji.
- Fatal: Wskazuje na krytyczną awarię, którą należy natychmiast usunąć.
Dzięki podziałowi komunikatów dziennika na te poziomy można łatwo je filtrować i ustalać ich priorytety w oparciu o ich ważność.
Ustaw minlevel="Trace" w znaczniku rules w pliku nLog.Config, jak pokazano ponizej.
<rules>
<!-- All messages with a minimum log level of Trace or higher are written to the Console -->
<logger name="*" minlevel="Trace" writeTo="console" />
</rules>
Napiszmy kod, który będzie rejestrował komunikaty wszystkich poziomów śledzenia.
using NLog;
internal class Program
{
// Create an instance of the Logger
private static Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
// Log messages of different tracking levels
logger.Trace("This is a Trace Message");
logger.Debug("This is a Debug Message");
logger.Info("This is an Info Message");
logger.Warn("This is a Warning Message");
logger.Error("This is an Error Message");
logger.Fatal("This is a Fatal Message");
// Pause the console for viewing output
Console.Read();
}
}Imports NLog
Friend Class Program
' Create an instance of the Logger
Private Shared logger As Logger = LogManager.GetCurrentClassLogger()
Shared Sub Main(ByVal args() As String)
' Log messages of different tracking levels
logger.Trace("This is a Trace Message")
logger.Debug("This is a Debug Message")
logger.Info("This is an Info Message")
logger.Warn("This is a Warning Message")
logger.Error("This is an Error Message")
logger.Fatal("This is a Fatal Message")
' Pause the console for viewing output
Console.Read()
End Sub
End ClassNasz program zarejestrował komunikaty w konsoli, jak pokazano poniżej.

Teraz zaprezentowaliśmy przykład rejestrowania komunikatów w konsoli. Teraz skonfigurujemy cel NLog, aby rejestrował komunikaty w pliku.
Komunikat dziennika w pliku
Musimy ustawić cel plikówy zamiast celu konsoli w naszym pliku konfiguracyjnym do rejestrowania w pliku.
<targets>
<!-- Log to a file at specified location -->
<target xsi:type="File" name="fileTarget" fileName="D:\Logs\mylog.txt" layout="${longdate} ${level:uppercase=true} ${message}" />
</targets>
<rules>
<!-- All messages with a minimum log level of Trace or higher are written to the file -->
<logger name="*" minlevel="Trace" writeTo="fileTarget" />
</rules>
Teraz uruchom program, aby zapisać komunikaty w pliku.

Cele rejestrowania
NLog obsługuje różne miejsca docelowe dla danych dziennika, co pozwala wybrać, gdzie mają być przechowywane komunikaty dziennika. Niektóre typowe cele to:
- Plik: Zapisuje komunikaty do jednego lub kilku plików.
- Konsola: Rejestruje komunikaty w konsoli.
- Baza danych: Zapisuje komunikaty w tabeli bazy danych (SQL Server, MySQL, Oracle, PostgreSQL itp.).
- E-mail: Wysyła komunikaty dziennika jako wiadomości e-mail.
- Dziennik zdarzeń: Rejestruje komunikaty w dzienniku zdarzeń systemu Windows.
- Niestandardowe miejsca docelowe: Możesz tworzyć niestandardowe miejsca docelowe logów, dostosowane do Twoich konkretnych potrzeb.
Można skonfigurować NLog tak, aby korzystał z jednego lub kilku celów jednocześnie.
Przedstawiamy IronPDF
Dowiedz się więcej o IronPDF – potężnej bibliotece .NET, która upraszcza obsługę plików PDF w aplikacjach napisanych w językach C# i VB.NET. Zapewnia rozbudowane możliwości tworzenia, edycji i manipulowania dokumentami PDF, a także konwersji treści HTML do formatu PDF, co czyni go niezbędnym narzędziem dla programistów z wielu różnych branż, w tym tworzenia stron internetowych, raportowania i zarządzania dokumentami.
Wyróżniającą cechą IronPDF jest funkcja konwersji HTML do PDF, która pozwala zachować układ i style dokumentu. Generuje pliki PDF na podstawie treści internetowych, dzięki czemu idealnie nadaje się do tworzenia raportów, faktur i dokumentacji. Pliki HTML, adresy URL i ciągi znaków HTML można łatwo konwertować do formatu PDF.
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
' 1. Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
' 2. Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
' 3. Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf")
End Sub
End ClassWygenerujmy plik PDF z logowaniem.
Generowanie plików PDF z rejestrowaniem
Pierwszym krokiem jest zainstalowanie biblioteki IronPDF w naszym projekcie. Możemy to zrobić za pomocą menedżera pakietów NuGet w Visual Studio lub poprzez interfejs CLI NuGet. Otwórz swój projekt i wpisz następujące polecenie w konsoli menedżera pakietów.
To polecenie zainstaluje IronPDF wraz ze wszystkimi wymaganymi zależnościami w naszym projekcie.
Napisz poniższy kod, aby wygenerować plik PDF z HTML z logowaniem.
using NLog;
using IronPdf;
internal class Program
{
// Create an instance of the Logger
private static Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
logger.Info("Initializing Chrome PDF Renderer");
ChromePdfRenderer renderer = new ChromePdfRenderer();
logger.Info("Creating PDF From HTML String");
var pdf = renderer.RenderHtmlAsPdf("<h1>This is my Sample PDF<h1>");
logger.Info("Saving PDF File");
pdf.SaveAs(@"D:\myPDF.pdf");
}
}Imports NLog
Imports IronPdf
Friend Class Program
' Create an instance of the Logger
Private Shared logger As Logger = LogManager.GetCurrentClassLogger()
Shared Sub Main(ByVal args() As String)
logger.Info("Initializing Chrome PDF Renderer")
Dim renderer As New ChromePdfRenderer()
logger.Info("Creating PDF From HTML String")
Dim pdf = renderer.RenderHtmlAsPdf("<h1>This is my Sample PDF<h1>")
logger.Info("Saving PDF File")
pdf.SaveAs("D:\myPDF.pdf")
End Sub
End ClassPowyższy fragment kodu utworzy plik PDF z zarejestrowanym komunikatem, jak pokazano poniżej.
Plik dziennika i plik PDF

Wnioski
Podsumowując, NLog stał się niezbędnym narzędziem do skutecznego logowania w aplikacjach C#, oferując programistom solidną platformę do przechwytywania, kategoryzowania i zarządzania danymi logów. Jego elastyczność i łatwość użytkowania sprawiają, że jest to najlepszy wybór do rejestrowania danych w różnych dziedzinach. Ponadto, w połączeniu z bibliotekami uzupełniającymi, takimi jak IronPDF, która upraszcza generowanie i edycję plików PDF w aplikacjach .NET, programiści mogą rozszerzyć swoje możliwości zarządzania o tworzenie dzienników i raportów w formacie PDF. Warto wspomnieć, że firma IronPDF oferuje bezpłatną wersję próbną oprogramowania IronPDF, umożliwiającą przetestowanie jego funkcji. Jeśli spełnia to Państwa wymagania, mogą Państwo zdecydować się na licencję komercyjną IronPDF, zapewniającą stały dostęp do możliwości IronPDF wraz z dodatkowymi korzyściami i wsparciem w zakresie płynnej integracji z Państwa projektami, zwłaszcza w zakresie funkcji związanych z plikami PDF.
Wykorzystując możliwości NLog i IronPDF, programiści mogą nie tylko uzyskać wgląd w zachowanie swoich aplikacji, ale także usprawnić procesy raportowania i zarządzania dokumentami, zapewniając, że ich oprogramowanie pozostaje wydajne, łatwe w utrzymaniu i posiada dobrze udokumentowane, ustrukturyzowane logowanie.

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczącą ponad 50 osób, obsługującą NASA, Teslę i światowe agencje rządowe.
Powiązane artykuły


