Altbilgi içeriğine atla
.NET YARDıM

Prism Günlüğü (Geliştiriciler için Nasıl Çalışır)

Grafik kullanıcı arayüzüne sahip olmamalarına rağmen, konsol uygulamaları genellikle hataları izlemek, uygulama performansını izlemek ve sorunları verimli bir şekilde çözmek için sağlam logging mekanizmalarına ihtiyaç duyar. Prism.Plugin.Logging, Prism Logging framework'ünün bir uzantısı olarak, NET uygulamaları için çeşitli logging sağlayıcılarını destekleyerek kapsamlı bir loglama çözümü sunar.

Bu makalede, PDF belgeleriyle çalışma konusunda güçlü bir .NET kütüphanesi olan IronPDF kullanarak Prism Logging'i konsol uygulamalarına nasıl entegre edeceğimizi inceliyoruz. Bu araçları birleştirerek, geliştiriciler konsol uygulamalarında gelişmiş loglama işlevselliği uygulayabilir, bu da bakım ve sorun giderme yeteneklerini artırır.

Prism Loglamaya Giriş

Prism.Plugin.Logging, XAML uygulamaları oluşturmak için popüler bir framework olan Prism'ı, kapsamlı loglama yetenekleri sağlayarak genişletir. NLog, Serilog ve Microsoft.Extensions.Logging gibi çoklu logging sağlayıcıları için destek ile, Prism.Plugin.Logging, çeşitli uygulama ihtiyaçlarına uyacak esneklik ve özelleştirme seçenekleri sunar.

Prism loglamasını kullanmanın avantajları

Esnek Logging Yapılandırması: Prism.Plugin.Logging, popüler seçenekler olan NLog, Serilog ve Microsoft.Extensions.Logging dahil olmak üzere, çeşitli logging sağlayıcılarını sorunsuz bir şekilde yapılandırmaya olanak tanır.

Yapılandırılmış Loglama Desteği: Geliştiriciler, Prism.Plugin.Logging kullanarak mesajlarıyla birlikte yapılandırılmış veri loglayabilir. Bu işlev, özellikle IronPDF tarafından üretilen log raporlarına zaman damgaları, hata kodları veya kullanıcı aktiviteleri gibi kapsamlı bağlam verilerinin kaydedilmesi gereken konsol uygulamalarını içeren senaryolarda faydalı olur.

Prism loglamasının nasıl kullanılacağı

  1. Yeni bir C# projesi oluşturun
  2. Prism loglama paketini yükleyin.
  3. SyslogLogger için bir nesne oluşturun ve yapılandırmayı parametre olarak geçin.
  4. Gerektiğinde log metodunu çağırın ve log mesajı ile log seviyesini iletin.
  5. Log nesnesini sonunda kapatın.

Prism Loglarına Başlarken

C# Projelerinde Prism Kurulumu

Bir C# projesine Prism'i entegre etmek kolaydır. Prism'i eklemek için Microsoft'un .NET paket yöneticisi olan NuGet'i kullanmak gereklidir. Prism Logs'u projelerinize entegre etmek için gereken araçlar ve kütüphaneler bu kütüphane tarafından sağlanır.

Prism Logging (Geliştiriciler için Nasıl Çalışır): Şekil 1 - NuGet Paket Yöneticisi çözümü için Yönet NuGet Paketini kullanarak Prism.Plugin.Logging.Loggly araması yaparak Prism'i kurun, ardından projeyi seçip Yükle düğmesine tıklayın.

.NET Uygulamalarında Prism'in Uygulanması

Prism, Windows Forms (WinForms) ve Windows Console dahil olmak üzere birçok .NET uygulama türüyle uyumludur. Her framework farklı uygulanmasına rağmen, temel konsept her zaman aynı olup, uygulamanızla ilgili verileri loglamaya yardımcı olur.

Visual Studio'da Yeni Proje Oluşturma

Visual Studio uygulamasında Dosya menüsünü seçin. "Yeni Proje" üzerine tıklayın, ardından "Konsol uygulaması"nı seçin.

Prism Logging (Geliştiriciler için Nasıl Çalışır): Şekil 2 - Visual Studio'yu Açın ve Yeni Projeyi Seçin - Konsol Uygulamasını Seçin

Yalnız dosya konumunu seçtikten sonra proje adı belirtilen metin alanına girin. Ardından, aşağıdaki örnekte gösterildiği gibi, gerekli .NET Framework'ü seçmek için Create butonuna tıklayın.

Prism Logging (Geliştiriciler İçin Nasıl Çalışır): Şekil 3 - Sonra, istenen proje adı ve yeri belirleyerek projenizi yapılandırın. Projeniz için ilgili .NET Framework'ü seçin ve Create butonuna tıklayın.

Seçilen uygulama, Visual Studio projesinin nasıl organize edildiğini belirleyecektir. Kod eklemeye ve uygulamayı oluşturmaya başlamak için program.cs dosyasını açmanız yeterlidir. Windows, konsol veya web uygulamalarını kullanabilirsiniz.

Bundan sonra, kütüphane eklenebilir ve kod test edilebilir.

Prism Loglarını Kullanmanın Basit Bir Örneği

Aşağıdaki kod örneğinde, Prism log nesnesi başlatılır ve ardından Prism loglarına birer birer farklı logging seviyeleri eklenir, tüm logları ve kritikliği bir listeye kaydedilir.

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

Prism Logging'den log raporları üretilir. Prism loglarını izlemek için Kiwi Syslog Service Manager adında bir araç kullanıyoruz.

Prism Log dosyası çıktısı

Prism Logging (Geliştiriciler için Nasıl Çalışır): Şekil 4 - Kiwi Syslog Service Manager aracı kullanarak oluşturulan Prism günlük raporlarını izleme.

Prism Log İşlemleri

Genişletilebilir Logging

Prism.Plugin.Logging'in yetenekleri, daha fazla işlevsellik ve esneklik sağlayan logging ile genişletilir. Log seviyelerini, log hedeflerini ve uygulamanızın logging ihtiyaçlarını karşılayacak diğer değişkenleri ayarlamak için birçok yapılandırma seçeneği sunar.

Birden Fazla Log Hedefi

Log mesajlarını konsol, dosyalar, veri tabanları ve diğer logging hizmetleri dahil olmak üzere çeşitli yerlere yönlendirebilirsiniz. Bu esneklik nedeniyle, uygulamanızın gereksinimlerine ve ortamına uygun en iyi logging hedeflerini seçebilirsiniz.

Özel Loggerlar

Eklenti ile Prism'in ILoggerFacade arayüzünü uygulayarak özel günlükleyiciler oluşturabilirsiniz. Bu, uygulamanızın ihtiyaçlarına göre özel bir günlükleme yeteneği oluşturmanızı veya üçüncü taraf günlükleme framework'leriyle bağlanmanızı sağlar.

Prism Logs ile Günlük Oluşturma

Prism günlükleri birkaç satır kod ile kolayca oluşturulabilir. Aşağıda, bir günlük oluşturmanın örneği bulunmaktadır.

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

Prism Logging ve IronPDF Entegrasyonu

Prism ve IronPDF'yi Birlikte Kullanma

Prism ve IronPDF'yi bir C# projesinde birleştirmek bazı heyecan verici olanaklar açar. Prism, günlüklerle çalışmak için harika bir araç olmasına rağmen, IronPDF bu içeriği PDF'lere dönüştürmek için mükemmel bir araçtır. Programcılar, bu bağlantı sayesinde, öğeyi özel tasarımlı bir PDF belgesine kaydeden uygulamalar oluşturabilirler.

IronPDF ile Prism Günlükleme

Kullanıcılar, Prism Günlüklerini kullanan bir Windows konsol uygulaması oluşturarak program içindeki Günlüklerle etkileşimde bulunabilirler. Bu kontrol, konsolda uygun alan kalacak şekilde yerleştirilmelidir ve günlükler yapmak için bolca yer bırakmalıdır. Sunucu günlük işlemleri ve HTTP günlükleri ekleyin.

IronPDF'yi Yükleyin

  • Visual Studio projesini açın.
  • "Araçlar" > "NuGet Paket Yöneticisi" > "Paket Yöneticisi Konsolu"nu seçin.

    • Paket Yöneticisi Konsolu'nda aşağıdaki komutu yazıp Enter'a basın:
    Install-Package IronPdf
  • IronPDF'i kurmanın bir başka yolu, NuGet Paket Yöneticisi'ni Çözümler için kullanmaktır.
    • Arama sonuçlarında IronPDF paketini arayın, seçin ve "Install" butonuna tıklayın. Visual Studio indirme ve yüklemeyi otomatik olarak halledecektir.

Prism Logging (Geliştiriciler için Nasıl Çalışır): Şekil 5 - NuGet Paket Yöneticisi çözümü için Yönet NuGet Paketini kullanarak IronPdf araması yaparak IronPDF'i kurun, ardından projeyi seçip Yükle düğmesine tıklayın.

  • NuGet, IronPDF paketini ve projeniz için gerekli olan tüm bağımlılıkları indirip kuracaktır.
  • IronPDF kurulduktan sonra, bunu projeniz için kullanabilirsiniz.

NuGet Web Sitesi Üzerinden Kurulum

IronPDF'in özellikleri, uyumluluğu ve diğer indirme seçeneklerini öğrenmek için https://www.nuget.org/packages/IronPdf adresindeki NuGet web sitesindeki IronPDF sayfasını ziyaret edin.

DLL Kullanarak Kurulum

Alternatif olarak, IronPDF'i DLL dosyasıyla doğrudan projeye dahil edebilirsiniz. DLL dosyasını içeren ZIP dosyasını indirmek için bu link'e tıklayın. Dosya açıldıktan sonra, DLL'i projenize dahil edin.

Mantığı Uygulamak

  • Renderer ve Logger'ı ayarlama: Yazılım, IronPDF renderer'ını ve Prism logger'ını ayarlar.
  • Günlük Mesajları: Belirlenen kategori ve öncelik ile mesajlar, MessageLog() yöntemi kullanılarak kaydedilebilir. Bu örnekte, uygulamanın başlama ve durma mesajlarının yanı sıra uygulama çalışırken ortaya çıkan hataları kaydediyoruz.
  • Mantığı Uygulama: Uygulama mantığının bir bölümü, PerformApplicationLogic() yöntemi ile simüle edilir. Hata günlüğünü örneklemek için, bu sadece bir mesaj üretir ve bu durumda bir istisna yükseltir.
  • Bir PDF Günlük Raporu Oluşturma: Uygulama mantığı yürütüldükten sonra, yazılım kaydedilen mesajlara dayalı olarak bir HTML belgesi oluşturur. Ardından bu HTML belgesini bir günlük dosyası olarak PDF raporu haline dönüştürmek için IronPDF'in RenderHtmlAsPdf() özelliğini kullanır. PDF dosyası daha sonra diske kaydedilir.

Daha önce tanımlanan kodu, IronPDF kodunu entegre etmek için genişletmek:

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

Aşağıda IronPDF'ten üretilen görüntü günlük raporu bulunmaktadır

Prism Logging (Geliştiriciler için Nasıl Çalışır): Şekil 6 - IronPDF kullanılarak ve Prism Log Report verileriyle oluşturulan PDF çıktısı.

IronPDF kod referansları hakkında daha fazla bilgi edinmek için buraya başvurun.

Sonuç

Prism.Plugin.Logging'in IronPDF ile entegrasyonu, geliştiricilerin terminal uygulamalarına geniş kapsamlı bir günlükleme yeteneğini kolayca dahil etmelerini sağlar. Geliştiriciler, her iki aracın özelliklerini kullanarak genel program bakımını iyileştirebilir, hata ayıklama yeteneklerini optimize edebilir ve günlüğe kaydetme işlemlerini hızlandırabilirler. Prism.Plugin.Logging, doğru uygulama ve kurulum ile konsol uygulamalarının tam günlükleme kapsamı sağlamasını, güçlü izleme ve arıza giderme yetenekleri garanti eder.

IronPDF, kalıcı lisans içeren ve kütüphane yükseltmesini içeren Lite bundle bir yıllık yazılım bakımını içeren süresiz bir lisans sunar. IronPDF, zaman ve yeniden dağıtım üzerindeki kısıtlamalara tabi olarak, geliştirme amaçları için ücretsiz bir lisans sunar. ücretsiz deneme edinmek için. Çeşitli Iron Software ürünleri hakkında daha fazla bilgi edinmek için, lütfen web sitesi linkini ziyaret edin.

Sıkça Sorulan Sorular

.NET konsol uygulamasına kayıt nasıl entegre edebilirim?

Prism.Plugin.Logging kullanarak .NET konsol uygulamasına kayıt entegre edebilirsiniz, bu çeşitli kayıt sağlayıcılarını destekler ve yapılandırılmış bir kayıt cercevesi sunar. Kurulum için, Prism kayıt paketini yükleyin, gerekli kayıt nesnelerini oluşturun ve kayıt hedeflerinizi ve seviyelerinizi yapılandırın.

Prism Logging ile IronPDF'yi birlestirmenin avantajları nelerdir?

Prism Logging ile IronPDF'yi birleştirmek, PDF log raporları uretmenizi, uygulama bakimini ve sorun giderme işlemlerini geliştirmenizi saglar. IronPDF, HTML log iceriğini PDF belgelerine dönüştürerek loglar üzerinde gözden geçirme ve paylaşım için taşınabilir bir format sunar.

Log verilerini .NET'de PDF belgesine nasıl dönüştürebilirim?

Log verilerini .NET'de PDF belgesine dönüştürmek için, log verilerinizi HTML olarak işlemek ve ardından RenderHtmlAsPdf gibi metodları kullanarak PDF'ye dönüştürmek için IronPDF'yi kullanabilirsiniz. Bu, ayrıntılı ve taşınabilir log raporları oluşturmanıza olanak tanır.

Prism.Plugin.Logging ile uyumlu olan kayıt sağlayıcıları nelerdir?

Prism.Plugin.Logging, NLog, Serilog, ve Microsoft.Extensions.Logging dahil olmak üzere bircok kayıt sağlayıcısıyla uyumludur. Bu esneklik, geliştiricilerin projelerinin ihtiyaçlarına en uygun kayıt sağlayıcısını seçmesine olanak tanır.

Visual Studio'da bir Prism kayıt projesi nasıl kurulum yapabilirim?

Visual Studio'da bir Prism kayıt projesi kurmak için yeni bir C# projesi oluşturun, NuGet Package Manager kullanarak Prism kayıt paketini yükleyin ve SyslogLogger nesnesi oluşturarak ve log seviyelerini ve hedeflerini yapılandırarak kayıt cercevesini başlatin.

Prism.Plugin.Logging özellestirilmis kayıt konfigürasyonları için kullanılabilir mi?

Evet, Prism.Plugin.Logging, özellestirilmis kayıt konfigürasyonlarını destekler. Log seviyelerini ayarlayabilir, özellestirilmis logger tanımlayabilir ve log mesajlarını çeşitli noktalara yonlendirerek, belirli uygulama gereksinimlerine uygun bir kayıt düzeni oluşturabilirsiniz.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Chief Technology Officer

Jacob Mellor, Iron Software'in Teknoloji Müdürü ve C# PDF teknolojisinin öncüsü olan vizyoner bir mühendis. Iron Software’in temel kod tabanının ilk geliştiricisi olarak, şirketin ürün mimarisini kuruluşundan bu yana şekillendirdi ve CEO Cameron Rimington ile birlikte NASA, Tesla ve ...

Daha Fazlasını Oku

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara