Przejdź do treści stopki
POMOC .NET

Rejestrowanie w Prism (jak to działa dla programistów)

Aplikacje konsolowe, pomimo braku graficznego interfejsu użytkownika, często wymagają solidnych mechanizmów logowania do śledzenia błędów, monitorowania wydajności aplikacji i skutecznego debugowania problemów. Prism.Plugin.Logging, rozszerzenie Prism Logging framework, oferuje kompleksowe rozwiązanie logowania dla aplikacji .NET, włączając wsparcie dla różnych dostawców logowania.

W tym artykule analizujemy, jak zintegrować Prism Logging z aplikacjami konsolowymi przy użyciu IronPDF, potężnej biblioteki .NET do pracy z dokumentami PDF. Łącząc te narzędzia, programiści mogą wdrożyć zaawansowaną funkcjonalność logowania w swoich aplikacjach konsolowych, zwiększając możliwości utrzymania i rozwiązywania problemów.

Wprowadzenie do Prism Logging

Prism.Plugin.Logging rozszerza Prism, popularny framework do budowy aplikacji XAML, poprzez dostarczenie kompleksowych możliwości logowania. Dzięki wsparciu dla wielu dostawców logowania, takich jak NLog, Serilog i Microsoft.Extensions.Logging, Prism.Plugin.Logging oferuje elastyczność i możliwości dostosowywania do różnych wymagań aplikacji.

Zalety uzywania Prism logging

Elastyczna konfiguracja logowania: Prism.Plugin.Logging umożliwia programistom bezproblemową konfigurację różnych dostawców logowania, włączając popularne opcje jak NLog, Serilog i Microsoft.Extensions.Logging.

Wsparcie dla logowania strukturalnego: Programiści mogą rejestrować dane strukturalne wraz z komunikatami używając Prism.Plugin.Logging. Funkcja ta jest szczególnie pomocna w scenariuszach z udziałem aplikacji konsolowych, gdzie muszą być rejestrowane i dołączane do raportów logów produkowanych przez IronPDF rozbudowane dane kontekstowe, w tym znaczniki czasu, kody błędów czy działania użytkowników.

Jak uzywac Prism logging

  1. Utwórz nowy projekt w języku C#
  2. Zainstaluj pakiet Prism logging.
  3. Utwórz obiekt SyslogLogger i podaj konfigurację jako parametr.
  4. Wywołaj metodę log przy każdej potrzebie, podając komunikat logu i poziom logowania.
  5. Usuń obiekt logu na końcu.

Rozpoczęcie pracy z Prism Logs

Konfiguracja Prism w projektach C

Integracja Prism z projektem C# jest prosta. Konieczne jest wykorzystanie NuGet, menedżera pakietów .NET firmy Microsoft, aby dodać Prism. Niezbędne narzędzia i biblioteki do włączenia Prism Logs do projektów dostarcza ta biblioteka.

Prism Logging (Jak to działa dla programistów): Rysunek 1 - Zainstaluj Prism używając zarządzania pakietami NuGet dla rozwiązania, wyszukując

Implementacja Prism w aplikacjach .NET

Prism jest kompatybilny z wieloma typami aplikacji .NET, włączając Windows Forms (WinForms) i Windows Console. Chociaż każdy framework jest implementowany inaczej, podstawowa koncepcja zawsze pozostaje niezmienna, pomagając nam w logowaniu danych związanych z aplikacją.

Tworzenie nowego projektu w Visual Studio

Wybierz menu Plik w aplikacji Visual Studio. Kliknij "Nowy Projekt", następnie wybierz "Aplikacja konsolowa".

Prism Logging (Jak to działa dla programistów): Rysunek 2 - Otwórz Visual Studio i wybierz

Wpisz nazwę projektu w wyznaczonym polu tekstowym po wybraniu lokalizacji pliku. Następnie, jak pokazano w przykładzie poniżej, wybierz wymaganą .NET Framework, klikając przycisk Utwórz.

Prism Logging (Jak to działa dla programistów): Rysunek 3 - Następnie skonfiguruj swój projekt, podając pożądaną nazwę projektu oraz lokalizację. Wybierz odpowiadający .NET Framework dla swojego projektu i kliknij przycisk Utwórz.

Następnie wybrana aplikacja zdecyduje, jak będzie zorganizowany projekt Visual Studio. Wystarczy otworzyć plik program.cs, aby rozpocząć dodawanie kodu do aplikacji i jej budowanie. Możesz używać Windows, konsoli lub aplikacji internetowych.

Po tym można dodać bibliotekę i przetestować kod.

Podstawowy przykład używania Prism Logs

W przykładzie kodu poniżej inicjujemy obiekt logowania Prism, a następnie dodajemy kolejne poziomy logowania do Prism logs, zapisując wszystkie logi oraz ich ważność na liście.

using Prism.Logging.Syslog;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

class Program
{
    public class Demo
    {
        public string Name { get; set; }
        public int Age { get; set; }

        // Configure the logger options
        static Options genOptions = new Options
        {
            HostNameOrIp = "127.0.0.1",
            Port = 514,
            AppNameOrTag = "LoggingDemo"
        };

        static SyslogLogger logger = new SyslogLogger(genOptions);
        static IList<LogData> Loglst = new List<LogData>();

        static async Task Main(string[] args)
        {
            MessageLog("Application started.", Prism.Logging.Syslog.Level.Information);
            PerformApplicationLogic();
            MessageLog("Application stopped.", Prism.Logging.Syslog.Level.Information);
        }

        static void PerformApplicationLogic()
        {
            // Example application logic
            Console.WriteLine("Performing application logic...");

            // Simulate error
            try
            {
                throw new Exception("Simulated Exception");
            }
            catch (Exception ex)
            {
                MessageLog($"Error occurred: {ex.Message}", Prism.Logging.Syslog.Level.Error);
            }
        }

        // Logs messages and their levels
        static void MessageLog(string message, Prism.Logging.Syslog.Level level)
        {
            Loglst.Add(new LogData { Message = message, Level = level.ToString() });
            logger.Log(message, level);
        }

        public class LogData
        {
            public string Message { get; set; }
            public string Level { get; set; }
        }

        public class Options : ISyslogOptions
        {
            public string HostNameOrIp { get; set; }
            public int? Port { get; set; }
            public string AppNameOrTag { get; set; }
        }
    }
}
using Prism.Logging.Syslog;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

class Program
{
    public class Demo
    {
        public string Name { get; set; }
        public int Age { get; set; }

        // Configure the logger options
        static Options genOptions = new Options
        {
            HostNameOrIp = "127.0.0.1",
            Port = 514,
            AppNameOrTag = "LoggingDemo"
        };

        static SyslogLogger logger = new SyslogLogger(genOptions);
        static IList<LogData> Loglst = new List<LogData>();

        static async Task Main(string[] args)
        {
            MessageLog("Application started.", Prism.Logging.Syslog.Level.Information);
            PerformApplicationLogic();
            MessageLog("Application stopped.", Prism.Logging.Syslog.Level.Information);
        }

        static void PerformApplicationLogic()
        {
            // Example application logic
            Console.WriteLine("Performing application logic...");

            // Simulate error
            try
            {
                throw new Exception("Simulated Exception");
            }
            catch (Exception ex)
            {
                MessageLog($"Error occurred: {ex.Message}", Prism.Logging.Syslog.Level.Error);
            }
        }

        // Logs messages and their levels
        static void MessageLog(string message, Prism.Logging.Syslog.Level level)
        {
            Loglst.Add(new LogData { Message = message, Level = level.ToString() });
            logger.Log(message, level);
        }

        public class LogData
        {
            public string Message { get; set; }
            public string Level { get; set; }
        }

        public class Options : ISyslogOptions
        {
            public string HostNameOrIp { get; set; }
            public int? Port { get; set; }
            public string AppNameOrTag { get; set; }
        }
    }
}
Imports Prism.Logging.Syslog
Imports System
Imports System.Collections.Generic
Imports System.Threading.Tasks

Friend Class Program
	Public Class Demo
		Public Property Name() As String
		Public Property Age() As Integer

		' Configure the logger options
		Private Shared genOptions As New Options With {
			.HostNameOrIp = "127.0.0.1",
			.Port = 514,
			.AppNameOrTag = "LoggingDemo"
		}

		Private Shared logger As New SyslogLogger(genOptions)
		Private Shared Loglst As IList(Of LogData) = New List(Of LogData)()

		Shared Async Function Main(ByVal args() As String) As Task
			MessageLog("Application started.", Prism.Logging.Syslog.Level.Information)
			PerformApplicationLogic()
			MessageLog("Application stopped.", Prism.Logging.Syslog.Level.Information)
		End Function

		Private Shared Sub PerformApplicationLogic()
			' Example application logic
			Console.WriteLine("Performing application logic...")

			' Simulate error
			Try
				Throw New Exception("Simulated Exception")
			Catch ex As Exception
				MessageLog($"Error occurred: {ex.Message}", Prism.Logging.Syslog.Level.Error)
			End Try
		End Sub

		' Logs messages and their levels
		Private Shared Sub MessageLog(ByVal message As String, ByVal level As Prism.Logging.Syslog.Level)
			Loglst.Add(New LogData With {
				.Message = message,
				.Level = level.ToString()
			})
			logger.Log(message, level)
		End Sub

		Public Class LogData
			Public Property Message() As String
			Public Property Level() As String
		End Class

		Public Class Options
			Implements ISyslogOptions

			Public Property HostNameOrIp() As String
			Public Property Port() As Integer?
			Public Property AppNameOrTag() As String
		End Class
	End Class
End Class
$vbLabelText   $csharpLabel

Raporty z logów są generowane z Prism Logging. Używamy narzędzia Kiwi Syslog Service Manager do monitorowania logów Prism.

Plik wyjściowy logu Prism

Prism Logging (Jak to działa dla programistów): Rysunek 4 - Monitorowanie wygenerowanych raportów Prism log za pomocą narzędzia Kiwi Syslog Service Manager.

Operacje logów Prism

Rozszerzalne logowanie

Możliwości Prism.Plugin.Logging są rozszerzane poprzez logowanie, co zapewnia więcej funkcjonalności i elastyczności. Oferuje szereg opcji konfiguracji w celu dostosowania poziomów logów, celów logowania i innych zmiennych do potrzeb logowania twojej aplikacji.

Wiele celów logowania

Z Prism.Plugin.Logging możesz kierować komunikaty logów do różnych lokalizacji, w tym konsoli, plików, baz danych i innych usług logowania. Dzięki takiej elastyczności możesz wybrać najlepsze cele logowania dla wymagań i środowiska twojej aplikacji.

Niestandardowi logerzy

Z pluginem można zaimplementować interfejs ILoggerFacade Prism do konstruowania niestandardowych logerów. Pozwala to konstruować niestandardowe funkcje logowania w oparciu o potrzeby twojej aplikacji lub integrację z frameworkami logowania firm trzecich.

Tworzenie logów z Prism Logs

Logi Prism mogą być łatwo tworzone przy użyciu kilku linii kodu. Poniżej znajduje się przykład tworzenia logu.

static Options genOptions = new Options
{
    HostNameOrIp = "127.0.0.1",
    Port = 514,
    AppNameOrTag = "LoggingDemo"
};
static SyslogLogger logger = new SyslogLogger(genOptions);
logger.Log("Sample message", Prism.Logging.Syslog.Level.Information);
static Options genOptions = new Options
{
    HostNameOrIp = "127.0.0.1",
    Port = 514,
    AppNameOrTag = "LoggingDemo"
};
static SyslogLogger logger = new SyslogLogger(genOptions);
logger.Log("Sample message", Prism.Logging.Syslog.Level.Information);
Private Shared genOptions As New Options With {
	.HostNameOrIp = "127.0.0.1",
	.Port = 514,
	.AppNameOrTag = "LoggingDemo"
}
Private Shared logger As New SyslogLogger(genOptions)
logger.Log("Sample message", Prism.Logging.Syslog.Level.Information)
$vbLabelText   $csharpLabel

Integracja Prism Logging i IronPDF

Używanie Prism i IronPDF razem

Łączenie Prism z IronPDF w projekcie C# otwiera ciekawe możliwości. IronPDF to świetne narzędzie do konwertowania tej zawartości na pliki PDF, podczas gdy Prism to doskonałe narzędzie do pracy z logami. Programiści mogą tworzyć aplikacje, które zapisują dane do zaprojektowanego na zamówienie dokumentu PDF dzięki tej łączności.

Prism Logging wraz z IronPDF

Tworząc aplikację konsolową Windows, która wykorzystuje Prism Logs, użytkownicy mogą korzystać z logów w ramach programu. Ten kontroler powinien zmieścić się w konsoli, pozostawiając dużo miejsca na tworzenie logów. Dodaj operacje logów serwera i logi HTTP.

Zainstaluj IronPDF

  • Otwórz projekt Visual Studio.
  • Wybierz "Narzędzia" > "Menedżer pakietów NuGet" > "Konsola menedżera pakietów".

    • W Konsoli Menedżera Pakietów wpisz następującą komendę i naciśnij Enter:
    Install-Package IronPdf
  • Inna metoda instalacji IronPDF to skorzystanie z Menedżera Pakietów NuGet dla Rozwiązania.
    • Przejrzyj wyniki wyszukiwania pakietu IronPDF, wybierz go, a następnie kliknij przycisk "Install". Visual Studio automatycznie zajmie się pobraniem i instalacją.

Prism Logging (Jak to działa dla programistów): Rysunek 5 - Zainstaluj IronPDF używając zarządzania pakietami NuGet dla rozwiązania poprzez wyszukiwanie

  • NuGet pobierze i zainstaluje pakiet IronPDF wraz z wszelkimi wymaganymi zależnościami dla twojego projektu.
  • Po zainstalowaniu IronPDF można go używać dla swojego projektu.

Zainstaluj za pośrednictwem strony NuGet

Odwiedź stronę IronPDF pod adresem https://www.nuget.org/packages/IronPdf na stronie NuGet, aby dowiedzieć się więcej o funkcjach IronPDF, kompatybilności i innych opcjach pobierania.

Wykorzystaj bibliotekę DLL do instalacji

Alternatywnie, możesz włączyć IronPDF bezpośrednio do swojego projektu, korzystając z jego pliku DLL. Aby pobrać plik ZIP zawierający DLL, kliknij ten link. Po rozpakowaniu pliku dodaj bibliotekę DLL do swojego projektu.

Implementacja logiki

  • Konfiguracja renderera i loggera: Oprogramowanie konfiguruje renderer IronPDF i logger Prism.
  • Logowanie komunikatów: Komunikaty z określoną kategorią i priorytetem mogą być logowane, korzystając z metody MessageLog(). W tym przykładzie logujemy komunikaty o uruchomieniu i zatrzymaniu aplikacji oraz wszelkie wyjątki, które wystąpiły podczas wykonywania aplikacji.
  • Stosowanie logiki: Część logiki aplikacji jest symulowana przez metodę PerformApplicationLogic(). Aby zilustrować logowanie błędów, produkuje on jedynie komunikat i wywołuje wyjątek w tym przypadku.
  • Tworzenie raportu logu PDF: Po wykonaniu logiki aplikacji, oprogramowanie tworzy dokument HTML na podstawie zapisanych komunikatów. Następnie korzysta z funkcji RenderHtmlAsPdf() IronPDF, aby przekształcić dokument HTML w plik logu w formie raportu PDF. Plik PDF jest następnie zapisywany na dysku.

Rozszerzając wcześniej zdefiniowany kod w celu integracji kodu IronPDF:

using IronPdf;

static void GeneratePdfLogReport()
{
    var renderer = new ChromePdfRenderer(); // Instantiates Chrome Renderer

    // Generate HTML content for PDF report
    string htmlContent = "<h1>Log Report</h1><ul>";
    foreach (var log in Loglst)
    {
        htmlContent += $"<li><strong>Message: {log.Message}</strong> Level: {log.Level}</li>";
    }
    htmlContent += "</ul>";

    // Generate PDF document
    var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);

    // Save PDF file
    string filePath = "log_report.pdf";
    pdfDocument.SaveAs(filePath);
    Console.WriteLine($"PDF log report generated: {filePath}");
}
using IronPdf;

static void GeneratePdfLogReport()
{
    var renderer = new ChromePdfRenderer(); // Instantiates Chrome Renderer

    // Generate HTML content for PDF report
    string htmlContent = "<h1>Log Report</h1><ul>";
    foreach (var log in Loglst)
    {
        htmlContent += $"<li><strong>Message: {log.Message}</strong> Level: {log.Level}</li>";
    }
    htmlContent += "</ul>";

    // Generate PDF document
    var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);

    // Save PDF file
    string filePath = "log_report.pdf";
    pdfDocument.SaveAs(filePath);
    Console.WriteLine($"PDF log report generated: {filePath}");
}
Imports IronPdf

Shared Sub GeneratePdfLogReport()
	Dim renderer = New ChromePdfRenderer() ' Instantiates Chrome Renderer

	' Generate HTML content for PDF report
	Dim htmlContent As String = "<h1>Log Report</h1><ul>"
	For Each log In Loglst
		htmlContent &= $"<li><strong>Message: {log.Message}</strong> Level: {log.Level}</li>"
	Next log
	htmlContent &= "</ul>"

	' Generate PDF document
	Dim pdfDocument = renderer.RenderHtmlAsPdf(htmlContent)

	' Save PDF file
	Dim filePath As String = "log_report.pdf"
	pdfDocument.SaveAs(filePath)
	Console.WriteLine($"PDF log report generated: {filePath}")
End Sub
$vbLabelText   $csharpLabel

Poniżej znajduje się obraz raportu z logów wygenerowanego z IronPDF

Prism Logging (Jak to działa dla programistów): Rysunek 6 - Wyjściowy PDF wygenerowany za pomocą IronPDF i danych z raportu Prism Log.

Aby dowiedzieć się więcej o przykładach kodu IronPDF, odwiedź stronę przykładów.

Wnioski

Prism.Plugin.Logging integracja z IronPDF umozliwia programistom latwa integracje rozbudowanej funkcjonalności logowania do aplikacji terminalowych. Programiści mogą poprawić ogólną konserwację programu, zoptymalizować możliwości debugowania i przyspieszyć operacje logowania, korzystając z funkcji obu narzędzi. Prism.Plugin.Logging umożliwia aplikacjom konsolowym uzyskanie pełnego zakresu logowania, zapewniając mocne monitorowanie i możliwości rozwiązywania problemów dzięki właściwym wdrożeniu i konfiguracji.

IronPDF oferuje wieczystą licencję na Lite bundle, która obejmuje stałą licencję, rok utrzymania oprogramowania oraz aktualizacje biblioteki. IronPDF oferuje bezpłatną licencję do celów deweloperskich, podlegającą ograniczeniom czasowym i redystrybucyjnym. Aby zdobyć bezpłatną wersję próbną. Aby dowiedzieć się więcej o różnych produktach Iron Software, odwiedź stronę Iron Software.

Często Zadawane Pytania

Jak mogę zintegrować rejestrowanie z aplikacją konsolową .NET?

Możesz zintegrować logowanie z aplikacją konsolową .NET Framework za pomocą Prism.Plugin.Logging, który obsługuje różnych dostawców logowania i oferuje ustrukturyzowaną platformę logowania. Aby to skonfigurować, zainstaluj pakiet logowania Prism, utwórz niezbędne obiekty logowania oraz skonfiguruj cele i poziomy logowania.

Jakie są zalety połączenia Prism Logging z IronPDF?

Połączenie Prism Logging z IronPDF pozwala generować raporty logów w formacie PDF, usprawniając konserwację aplikacji i rozwiązywanie problemów. IronPDF może konwertować zawartość logów HTML na dokumenty PDF, zapewniając przenośny format do przeglądania i udostępniania logów.

Jak mogę przekonwertować dane dziennika na dokument PDF w .NET?

Aby przekonwertować dane dziennika na dokument PDF w środowisku .NET, należy użyć biblioteki IronPDF do renderowania danych dziennika jako HTML, a następnie przekonwertować je na PDF za pomocą metod takich jak RenderHtmlAsPdf. Pozwala to na tworzenie szczegółowych i przenośnych raportów dziennika.

Którzy dostawcy usług logowania są kompatybilni z Prism.Plugin.Logging?

Prism.Plugin.Logging jest kompatybilny z wieloma dostawcami logowania, w tym NLog, Serilog i Microsoft.Extensions.Logging. Ta elastyczność pozwala programistom wybrać dostawcę logowania, który najlepiej odpowiada potrzebom ich projektu.

Jak skonfigurować projekt logowania Prism w Visual Studio?

Aby skonfigurować projekt logowania Prism w Visual Studio, należy utworzyć nowy projekt C#, zainstalować pakiet logowania Prism za pomocą menedżera pakietów NuGet oraz zainicjować framework logowania poprzez utworzenie obiektu SyslogLogger i skonfigurowanie poziomów logowania oraz miejsc docelowych.

Czy Prism.Plugin.Logging może być używany do niestandardowych konfiguracji logowania?

Tak, Prism.Plugin.Logging obsługuje niestandardowe konfiguracje logowania. Można dostosować poziomy logowania, zdefiniować niestandardowe loggery i kierować komunikaty logowania do różnych miejsc docelowych, co pozwala na dostosowanie konfiguracji logowania do konkretnych wymagań aplikacji.

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