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 wymagaja solidnych mechanizmow logowania do sledzenia błędów, monitorowania wydajności aplikacji i skutecznego debugowania problemow. Prism.Plugin.Logging, rozszerzenie Prism Logging framework, oferuje kompleksowe rozwiązanie logowania dla aplikacji .NET, włączajac wsparcie dla różnych dostawcow logowania.

W tym artykułe analizujemy, jak zintegrowac Prism Logging z aplikacjami konsolowymi przy użyciu IronPDF, potężnej biblioteki .NET do pracy z dokumentami PDF. Laczac te narzędzia, programisci mogą wdrożyć zaawansowana funkcjonalność logowania w swoich aplikacjach konsolowych, zwiększając możliwości utrzymania i rozwiązywania problemow.

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 dostawcow logowania, takich jak NLog, Serilog i Microsoft.Extensions.Logging, Prism.Plugin.Logging oferuje elastycznosc i możliwości dostosowywania do różnych wymagań aplikacji.

Zalety używania Prism logging

Elastyczna konfiguracja logowania: Prism.Plugin.Logging umożliwia programistom bezproblemowa konfiguracje różnych dostawcow logowania, włączajac popularne opcje jak NLog, Serilog i Microsoft.Extensions.Logging.

Wsparcie dla logowania strukturalnego: Programisci mogą rejestrowac dane strukturalne wraz z komunikatami używając Prism.Plugin.Logging. Funkcja ta jest szczegółnie pomocna w scenariuszach z udzialem aplikacji konsolowych, gdzie musza być rejestrowane i dolaczane do raportow logow produkowanych przez IronPDF rozbudowane dane kontekstowe, w tym znaczniki czasu, kody błędów czy działania użytkowników.

Jak używać Prism logging

  1. Utwórz nowy projekt w języku C#
  2. Zainstaluj pakiet Prism logging.
  3. Utworz obiekt SyslogLogger i podaj konfiguracje jako parametr.
  4. Wywolaj metode log przy kazdej potrzebie, podajac komunikat logu i poziom logowania.
  5. Usun obiekt logu na koncu.

Rozpoczecie pracy z Prism Logs

Setting up Prism in C# Projects

Integracja Prism z projektem C# jest prosta. Konieczne jest wykorzystanie NuGet, menedzera pakietow .NET firmy Microsoft, aby dodac Prism. Niezbedne narzędzia i biblioteki do włączenia Prism Logs do projektow dostarcza ta biblioteka.

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

Implementacja Prism w aplikacjach Dot .NET

Prism jest kompatybilny z wieloma typami aplikacji Dot .NET, włączajac Windows Forms (WinForms) i Windows Console. Chociaż kazdy framework jest implementowany inaczej, podstawowa koncepcja zawsze pozostaje niezmienna, pomagajac nam w logowaniu danych związanych z aplikacja.

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 deweloperów): Rysunek 2 - Otwórz Visual Studio i wybierz

Wpisz nazwe projektu w wyznaczonym polu tekstowym po wybraniu lokalizacji pliku. Następnie, jak pokazano w przykładzie poniżej, wybierz wymagana .NET Framework, klikajac przycisk Utworz.

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

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

Po tym można dodac biblioteke i przetestowac 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, zapisujac wszystkie logi oraz ich ważność na liscie.

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 logow sa generowane z Prism Logging. Uzywamy narzędzia Kiwi Syslog Service Manager do monitorowania logow Prism.

Plik wyjsciowy logu Prism

Prism Logging (Jak to działa dla deweloperów): Rysunek 4 - Monitorowanie wygenerowanych raportów logów Prism przy użyciu narzędzia Kiwi Syslog Service Manager.

Operacje logow Prism

Rozszerzalne logowanie

Mozliwosci Prism.Plugin.Logging sa rozszerzane poprzez logowanie, co zapewnia więcej funkcjonalności i elastycznosci. Oferuje szereg opcji konfiguracji w celu dostosowania poziomow logow, celow logowania i innych zmiennych do potrzeb logowania twojej aplikacji.

Wiele celow logowania

Z Prism.Plugin.Logging możesz kierowac komunikaty logow do różnych lokalizacji, w tym konsoli, plików, baz danych i innych uslug logowania. Dzięki takiej elastycznosci możesz wybrac najlepsze cele logowania dla wymagań i środowiska twojej aplikacji.

Niestandardowi logerzy

Z pluginem można zaimplementowac interfejs ILoggerFacade Prism do konstruowania niestandardowych logerow. Pozwala to konstruowac niestandardowe funkcje logowania w oparciu o potrzeby twojej aplikacji lub integracje z okviraniami logowania firm trzecich.

Tworzenie logow z Prism Logs

Logi Prism mogą być łatwo tworzony przy użyciu kilku lini 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

Uzywanie Prism i IronPDF razem

Laczenie Prism z IronPDF w projekcie C# otwiera ciekawe możliwości. IronPDF to wspaniale narzędzie do konwertowania tej zawartości na pliki PDF, mimo ze Prism to doskonale narzędzie do pracy z logami. Programisci mogą tworzyć aplikacje, ktore zapisuje element do zaprojektowanego na zamowienie dokumentu PDF dzięki tej lacznosci.

Prism Logging wraz z IronPDF

Tworzac aplikacje konsolowa Windows, która wykorzystuje Prism Logs, użytkownicy mogą korzystać z logow w ramach programu. Ten kontroler powinien zmiescic sie w konsoli, pozostawiajac duzo miejsca na tworzenie logow. Dodaj operacje logow serwera i logi HTTP.

Zainstaluj IronPDF

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

    • W Konsoli Menedzera Pakietow wpisz następująca komende i naciśnij Enter:
    Install-Package IronPdf
  • Inna metoda instalacji IronPDF to skorzystanie z Menedzera Pakietow NuGet dla Rozwiazania.
    • 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 deweloperów): Rysunek 5 - Zainstaluj IronPDF używając Zarządzania pakietem NuGet dla rozwiązania, wyszukując

  • 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 internetowej NuGet

Odwiedz strone IronPDF pod adresem https://www.nuget.org/packages/IronPdf na stronie NuGet, aby dowiedziec sie więcej o funkcjach IronPDF, kompatybilnosci 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 pobrac plik ZIP zawierajacy DLL, kliknij ten link. Po rozpakowaniu pliku dodaj bibliotekę DLL do swojego projektu.

Implementacja logiki

  • Konfiguracja Renderera i Logera: Oprogramowanie konfiguruje renderer IronPDF i logger Prism.
  • Logowanie komunikatow: Komunikaty z okreslona kategoria 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 wystapily podczas wykonywania aplikacji.
  • Stosowanie logiki: Czesc logiki aplikacji jest symulowana przez metode PerformApplicationLogic(). Aby zilustrowac logowanie błędów, produkuje on jedynie komunikat i wywoluje wyjątek w tym przypadku.
  • Tworzenie raportu logu PDF: Po wykonaniu logiki aplikacji, oprogramowanie tworzy dokument HTML na podstawie zapisanych komunikatow. Następnie korzysta z funkcji RenderHtmlAsPdf() IronPDF, aby przeksztalcic dokument HTML w plik logu w formie raportu PDF. Plik PDF jest następnie zapisywany na dysku.

Rozszerzajac wczesniej 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 logow wygenerowanego z IronPDF

Prism Logging (Jak to działa dla deweloperów): Rysunek 6 - Wygenerowany output PDF przy użyciu IronPDF i danych z raportu logów Prism.

Aby dowiedziec sie więcej o referencjach kodu IronPDF, odwołaj się tutaj.

Wnioski

Prism.Plugin.Logging integracja z IronPDF umożliwia programistom łatwa 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 licencję wieczystą Lite bundle, która zawiera stałą licencję, rok utrzymania oprogramowania i aktualizację biblioteki. IronPDF oferuje darmowa licencje do celow rozwojowych, podlegajac ograniczeniom czasowym i redystrybucyjnym. Aby zdobyć darmowa wersje próbna. Aby dowiedzieć się więcej o różnych produktach Iron Software, odwiedź ich stronę internetową.

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

Zespół wsparcia Iron

Jesteśmy online 24 godziny, 5 dni w tygodniu.
Czat
E-mail
Zadzwoń do mnie