Przejdź do treści stopki
POMOC .NET

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 NLog NuGet

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:

  1. W menu "Narzędzia" wybierz "Menedżer pakietów NuGet", a następnie wybierz "Zarządzaj pakietami NuGet dla rozwiązania".
  2. 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".
  3. W oknie NuGet Package Manager kliknij kartę "Browse" (Przeglądaj) i w polu wyszukiwania wpisz "NLog".
  4. W wynikach wyszukiwania powinno pojawić się pakiet NLog. Kliknij, aby zaznaczyć.
  5. 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.
  6. Wybierz żądaną wersję pakietu NLog z listy rozwijanej wersji. W razie potrzeby można wybrać najnowszą stabilną wersję lub konkretną wersję.
  7. 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.

  1. Wybierz "Dodaj" > "Nowy element..."
  2. W oknie dialogowym "Dodaj nowy element" wyszukaj "Plik XML" lub "XML" i wybierz go.
  3. Nazwij plik nlog.config i kliknij przycisk "Dodaj".

    Nlog Csharp Guide 1 related to Utwórz plik konfiguracyjny NLog

  4. Otwórz nowo utworzony plik nlog.config w edytorze tekstowym lub edytorze XML.
  5. 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">

  <targets>

    <target name="console" xsi:type="Console" layout="${longdate}|${message}"/>
  </targets>

  <rules>

    <logger name="*" minlevel="Debug" writeTo="console" />
  </rules>

</nlog>
<?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">

  <targets>

    <target name="console" xsi:type="Console" layout="${longdate}|${message}"/>
  </targets>

  <rules>

    <logger name="*" minlevel="Debug" writeTo="console" />
  </rules>

</nlog>
XML

W kodzie C# upewnij się, że ładujesz konfigurację NLog z pliku nlog.config. Zazwyczaj robi się to w kodzie startowym aplikacji, np. w pliku ASP.NET Core Startup.cs (dla Wersji .NET równej lub starszej niż .NET 5), pliku program.cs (dla Wersji .NET 6 lub nowszej) 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();
    }
}
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(ByVal 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 Class
$vbLabelText   $csharpLabel

Wynik działania powyższego programu jest następujący:

Nlog Csharp Guide 2 related to Plik konfiguracyjny

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:

  1. Śledzenie: Najbardziej szczegółowy poziom, zazwyczaj używany do celów diagnostycznych.
  2. Debug: Służy do wyświetlania informacji dotyczących debugowania, które mogą być pomocne podczas tworzenia oprogramowania.
  3. Informacje: Ogólne informacje na temat działania aplikacji.
  4. Ostrzeżenie: Wskazuje na potencjalny problem, który nie zakłóca działania aplikacji.
  5. Błąd: Wskazuje na niepowodzenie, które należy zbadać, ale niekoniecznie powoduje awarię aplikacji.
  6. 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 tagu rules w pliku nLog.Config, jak pokazano poniżej.

<rules>

  <logger name="*" minlevel="Trace" writeTo="console" />
</rules>
<rules>

  <logger name="*" minlevel="Trace" writeTo="console" />
</rules>
XML

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();
    }
}
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 Class
$vbLabelText   $csharpLabel

Nasz program zarejestrował komunikaty w konsoli, jak pokazano poniżej.

komunikaty dziennika

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>

  <target xsi:type="File" name="fileTarget" fileName="D:\Logs\mylog.txt" layout="${longdate} ${level:uppercase=true} ${message}" />
</targets>

<rules>

  <logger name="*" minlevel="Trace" writeTo="fileTarget" />
</rules>
<targets>

  <target xsi:type="File" name="fileTarget" fileName="D:\Logs\mylog.txt" layout="${longdate} ${level:uppercase=true} ${message}" />
</targets>

<rules>

  <logger name="*" minlevel="Trace" writeTo="fileTarget" />
</rules>
XML

Teraz uruchom program, aby zapisać komunikaty w pliku.

Nlog Csharp Guide 4 related to Komunikat dziennika 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:

  1. Plik: Zapisuje komunikaty do jednego lub kilku plików.
  2. Konsola: Rejestruje komunikaty w konsoli.
  3. Baza danych: Zapisuje komunikaty w tabeli bazy danych (SQL Server, MySQL, Oracle, PostgreSQL itp.).
  4. E-mail: Wysyła komunikaty dziennika jako wiadomości e-mail.
  5. Dziennik zdarzeń: Rejestruje komunikaty w dzienniku zdarzeń systemu Windows.
  6. 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");
    }
}
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 Class
$vbLabelText   $csharpLabel

Wygenerujmy 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.

Install-Package IronPdf

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");
    }
}
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 Class
$vbLabelText   $csharpLabel

Powyższy fragment kodu utworzy plik PDF z zarejestrowanym komunikatem, jak pokazano poniżej.

Plik dziennika i plik PDF

Nlog Csharp Guide 5 related to 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 udokumentówane, ustrukturyzowane logowanie.

Często Zadawane Pytania

W jaki sposób NLog usprawnia rejestrowanie w aplikacjach C#?

NLog zapewnia solidną i elastyczną platformę do logowania dla aplikacji C#. Pozwala programistom na łatwe wdrażanie logowania poprzez definiowanie miejsc docelowych i reguł logowania w pliku konfiguracyjnym, obsługując różne poziomy logowania, takie jak Trace, Debug, Info, Warn, Error i Fatal.

Jak wygląda proces konfiguracji NLog w aplikacji .NET?

Aby skonfigurować NLog w aplikacji .NET, należy zainstalować pakiet NLog NuGet oraz skonfigurować miejsca docelowe i reguły logowania w pliku nlog.config. Ta konfiguracja pozwala określić, gdzie mają być kierowane logi, np. do plików, konsoli, baz danych lub wiadomości e-mail.

Jak mogę rejestrować komunikaty w bazie danych za pomocą NLog?

Aby rejestrować komunikaty w bazie danych za pomocą NLog, należy skonfigurować cel bazy danych w pliku nlog.config. Należy określić ciąg połączenia oraz niezbędne szczegóły dotyczące tabeli lub procedury przechowywanej dla wpisów dziennika.

Czy NLog może służyć do wysyłania komunikatów dziennika pocztą elektroniczną?

Tak, NLog może wysyłać komunikaty dziennika pocztą elektroniczną poprzez skonfigurowanie odbiorcy e-mail w pliku nlog.config. Konieczne będzie podanie danych serwera SMTP, adresów e-mail odbiorców oraz innych ustawień poczty elektronicznej.

Jakie są zalety korzystania z IronPDF for .NET do generowania plików PDF?

IronPDF to potężna biblioteka .NET, która upraszcza generowanie, edycję i konwersję plików PDF. Obsługuje konwersję HTML do PDF, umożliwiając programistom generowanie plików PDF z ciągów znaków HTML, plików lub adresów URL, usprawniając procesy raportowania i zarządzania dokumentami.

Jak zintegrować rejestrowanie z generowaniem plików PDF w aplikacji napisanej w języku C#?

Możesz zintegrować NLog z IronPDF w aplikacji C#, używając NLog do rejestrowania zdarzeń aplikacji, a IronPDF do generowania plików PDF. Ta kombinacja pozwala tworzyć szczegółowe raporty PDF zawierające informacje z logów.

Jakie są typowe kroki rozwiązywania problemów związanych z konfiguracją NLog?

Typowe kroki rozwiązywania problemów związanych z konfiguracją NLog obejmują sprawdzenie pliku nlog.config pod kątem błędów składniowych, upewnienie się, że ścieżki do plików i uprawnienia dla miejsc docelowych logów są poprawne, oraz sprawdzenie, czy w aplikacji nie występują wyjątki, które mogłyby wpływać na logowanie.

Jak mogę przetestować możliwości IronPDF przed zakupem?

IronPDF oferuje bezpłatną wersję próbną, która pozwala programistom przetestować jego funkcje. Okres próbny daje możliwość oceny możliwości IronPDF w zakresie generowania, edycji i konwersji plików PDF przed podjęciem decyzji o zakupie licencji komercyjnej.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

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ą...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie