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

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

Grafik kullanıcı arabirimi olmamasına rağmen, konsol uygulamaları genellikle hataları izlemek, uygulama performansını izlemek ve sorunları verimli bir şekilde çözmek için sağlam kayıt mekanizmalarına ihtiyaç duyar. Prism.Plugin.Logging, .NET uygulamaları için kapsamlı bir kayıt çözümü sunan Prism Logging framework'ünün bir uzantısıdır ve çeşitli kayıt sağlayıcıları için destek içerir.

Bu yazıda, güçlü bir .NET kütüphanesi olan IronPDF kullanarak Prism Logging'i konsol uygulamalarınıza nasıl entegre edeceğimizı keşfediyoruz. Bu araçları birleştirerek geliştiriciler, konsol uygulamalarında gelişmiş günlük kaydı işlevsellikleri uygulayıp bakım ve sorun giderme alanlarını güçlendirebilirler.

Prism Logging Giriş

Prism.Plugin.Logging, XAML uygulamaları geliştirmek için popüler bir framework olan Prism'i kapsamlı günlük kaydı yetenekleri sağlayarak genişletir. NLog, Serilog ve Microsoft.Extensions.Logging gibi birden fazla günlük kaydı sağlayıcısı için destek sunan Prism.Plugin.Logging, çeşitli uygulama gereksinimlerine uyacak esneklik ve özelleştirme seçenekleri sunar.

Prism Günlük Kaydı Kullanmanın Avantajları

Esnek Günlük Yapılandırması: Prism.Plugin.Logging, geliştiricilere NLog, Serilog ve Microsoft.Extensions.Logging gibi popüler seçenekler dâhil olmak üzere çeşitli günlük sağlayıcılarının yapılandırılmasını sorunsuz bir şekilde sağlar.

Yapılandırılmış Veri Desteği: Prism.Plugin.Logging'i kullanarak geliştiriciler, mesajlarıyla yapılandırılmış verileri kaydedebilirler. Bu işlev, IronPDF tarafından üretilen günlük raporlarında zaman damgaları, hata kodları veya kullanıcı etkinlikleri gibi kapsamlı bağlam verilerinin kaydedilmesi ve eklenmesi gereken konsol uygulamaları içeren senaryolarda özellikle faydalıdır.

Prism Günlükleri Nasıl Kullanılır

  1. Yeni bir C# projesi oluşturun
  2. Prism günlük paketi yüklenir.
  3. SyslogLogger için bir nesne oluşturun ve yapılandırmayı parametre olarak iletin.
  4. Gerektiğinde günlük metodunu çağırın ve günlük mesajını ve günlük seviyesini iletin.
  5. En sonunda günlük nesnesini elden çıkarın.

Prism Günlüklerle Başlangıç

Setting up Prism in C# Projects

Prism'i bir C# projesine entegre etmek kolaydır. Prism'i eklemek için Microsoft'un .NET paket yöneticisi NuGet'i kullanmak gereklidir. Prism Günlüklerini projelerinize entegre etmeniz için gerekli araçlar ve kütüphaneler bu kütüphane tarafından sağlanmaktadır.

Prism Günlüğü (Geliştiriciler İçin Nasıl Çalıştığı): Şekil 1 - NuGet Paket Yöneticisi'nde arama çubuğuna

Dot .NET Uygulamalarında Prism Uygulama

Prism, Windows Forms (WinForms) ve Windows Konsol gibi birçok Dot .NET uygulama türüyle uyumludur. Her çerçeve farklı şekilde uygulanmış olsa da, temel kavram her zaman aynıdır; uygulamanız ile ilgili verileri kaydetmemize yardımcı olur.

Visual Studio'da Yeni Proje Oluşturma

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

Prism Günlüğü (Geliştiriciler İçin Nasıl Çalıştığı): Şekil 2 - Visual Studio'yu açın ve

Dosya konumunu seçtikten sonra belirlenmiş yazı alanına proje adını girin. Ardından, aşağıdaki örnekte gösterildiği gibi, Oluştur düğmesine tıklayarak gerekli .NET Framework'ünü seçin.

![Prism Logging (Geliştiriciler İçin Nasıl Çalışır): Şekil 3 - Ardından, projenizin istenen proje adı ve konumunu belirterek yapılandırın. Projeniz için ilgili .NET Framework'ü seçin ve "Oluştur" düğmesine tıklayın.] (/static-assets/pdf/blog/prism-logging/prism-logging-3.webp)

Seçilen uygulama, Visual Studio projesinin nasıl düzenleneceğini belirleyecektir. Uygulamaya başlangıç kodu eklemeye ve oluşturmaya başlamak için program.cs dosyasını açın. Windows, konsol veya web uygulamasını kullanabilirsiniz.

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

Prism Günlükleri Kullanmanın Temel Bir Örneği

Aşağıdaki kod örneğinde, Prism günlük nesnesini başlatıyoruz ve ardından Prism günlüklere sırayla farklı günlük seviyeleri ekleyerek, tüm günlükleri ve bunların kritik düzeylerini bir listeye kaydediyoruz.

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 günlük raporları üretilir. Prism günlüklerini izlemek için 'Kiwi Syslog Service Manager' adlı bir araç kullanıyoruz.

Prism Günlük Çıkış Dosyası

Prism Günlüğü (Geliştiriciler İçin Nasıl Çalıştığı): Şekil 4 - Kiwi Syslog Servis Yöneticisi aracı kullanarak oluşturulan Prism günlük raporlarını izleyin.

Prism Günlükleri Operasyonları

Genişletilebilir Günlük Kaydı

Prism.Plugin.Logging'in yetenekleri, daha fazla işlevsellik ve esneklik sağlayan günlük kaydı ile genişletilir. Uygulamanızın ihtiyaçlarına uygun olarak günlük seviyelerini, günlük hedeflerini ve diğer değişkenleri ayarlamak için bir dizi yapılandırma seçeneği sunar.

Birden Fazla Günlük Hedefi

Prism.Plugin.Logging ile günlük mesajlarını konsol, dosyalar, veritabanları ve diğer günlük servisleri gibi çeşitli yerlere yönlendirebilirsiniz. Bu esneklik, uygulamanızın gereksinimleri ve ortamı için doğru günlük hedeflerini seçmenize olanak tanır.

Özel Günlükleyici

Eklentiyi kullanarak, Prism'in ILoggerFacade arayüzünü uygulayarak özel günlükleyici oluşturabilirsiniz. Bu, uygulamanızın ihtiyaçlarına göre özel günlük kaydı özellikleri geliştirebilmenizi veya üçüncü taraf günlük çerçeveleriyle arayüz oluşturabilmenizi sağlar.

Prism Günlükleri ile Günlük Oluşturma

Prism günlükleri, birkaç satır kod ile kolayca oluşturulabilir. Bir günlüğü oluşturmanın örneği aşağıdadı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'i Birlikte Kullanma

Prism ile IronPDF birleştirilmesi, bir C# projesinde heyecan verici bazı olanaklar açar. Prism, günlük bilgileri ile çalışma konusunda harika bir araç olmasına rağmen, IronPDF bu içeriği PDF'lere dönüştürmek için olağanüstü bir araçtır. Bu bağlanabilirlik sayesinde, programcılar öğeyi özel olarak tasarlanmış bir PDF belgesine kaydeden uygulamalar oluşturabilir.

IronPDF ile Prism Günlükleri

Kullanıcılar, Prism Günlüklerini kullanan bir Windows konsol uygulaması oluşturarak, programınız içinde Günlüklerle etkileşime geçebilirler. Bu kontrolün konsolda yeterli boş alanla günlük oluşturmasını sağlamak gerekir. Sunucu günlük işlemleri ve HTTP günlükleri ekleyin.

IronPDF'i Kurun

  • Visual Studio projenizi açın.
  • "Araçlar" > "NuGet Paket Yöneticisi" > "Paket Yöneticisi Konsolu" seçeneğini tercih edin.

    • Paket Yöneticisi Konsolu'nda aşağıdaki komutu yazın ve Enter tuşuna basın:
    Install-Package IronPdf
  • IronPDF'yi yüklemenin başka bir yolu, Çözüm için NuGet Paket Yöneticisi'ni kullanmaktır.
    • IronPDF paketini arama sonuçlarında gezinin, seçin ve "Yükle" düğmesine tıklayın. Visual Studio, indirme ve kurulumu otomatik olarak halleder.

Prism Günlüğü (Geliştiriciler İçin Nasıl Çalıştığı): Şekil 5 - NuGet Paket Yöneticisi'nde arama çubuğuna

  • NuGet, projenizde gereken IronPDF paketini ve bağımlılıklarını indirip yükleyecektir.
  • IronPDF kurulduktan sonra, projeniz için kullanabilirsiniz.

NuGet Web Sitesi Üzerinden Yükleme

IronPDF'nin özellikleri, uyumluluğu ve diğer indirme seçenekleri hakkında daha fazla bilgi edinmek için NuGet web sitesinde https://www.nuget.org/packages/IronPdf adresindeki IronPDF sayfasını ziyaret edin.

DLL kullanarak Yükleme

Alternatif olarak, bilgisayarınıza DLL dosyasını ZIP dosyası olarak indirerek IronPDF'yi doğrudan projenize entegre edebilirsiniz. DLL içeren ZIP dosyasını indirmek için bu bağlantıyı tıklayın. Zip açıldıktan sonra DLL'i projenize ekleyin.

Logikleri Uygulama

  • Çevirici ve Günlükleyiciyi Kurma: Yazılım, IronPDF çeviricisini ve Prism günlüğünü ayarlar.
  • Günlük Mesajları: Belirlenen bir kategori ve öncelik ile mesajları kaydetmek için MessageLog() yöntemini kullanarak mesajları kaydedebilirsiniz. Bu örnekte, uygulamanın başlangıç ve durma mesajlarını ve uygulamanın çalışması sırasında oluşan her türlü istisnayı kaydediyoruz.
  • Logik Uygulama: PerformApplicationLogic() yöntemi tarafından simüle edilen bir kısım uygulama logikleridir. Bu durumda, hata kaydını ilginç bir şekilde göstermek için yalnızca bir mesaj üretir ve bir istisna ortaya çıkarır.
  • Bir PDF Günlük Raporu Oluşturmak: Uygulama mantığı çalıştırıldıktan sonra, yazılım kaydedilen mesajlar temelinde bir HTML belgesi oluşturmaktadır. Daha sonra IronPDF'nin RenderHtmlAsPdf() özelliğini kullanarak HTML belgesini PDF raporu olarak bir günlük dosyasına dönüştürür. Ardından PDF dosyası diske kaydedilir.

IronPDF kodunu dahil etmek için daha önce tanımlanmış olan kodu genişletme:

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

IronPDF'den üretilen görüntü günlük raporu aşağıda verilmiştir

Prism Günlüğü (Geliştiriciler İçin Nasıl Çalıştığı): Şekil 6 - IronPDF ve Prism Günlük Raporu verilerini kullanarak oluşturulan Çıkış PDF dosyası.

IronPDF kod referansları hakkında daha fazla bilgi edinmek için buraya bakın.

Sonuç

Prism.Plugin.Logging entegrasyonu IronPDF ile geliştiricilerin kolayca terminal uygulamalarına kapsamlı bir günlükleme yeteneği dâhil etmelerini sağlar. Her iki aracın özelliklerini kullanarak geliştiriciler, genel program bakımını artırabilir, hata ayıklama yeteneklerini optimize edebilir ve günlüğe kaydetme işlemlerini hızlandırabilir. Prism.Plugin.Logging, doğru implementasyon ve yapılandırma ile konsol uygulamalarının eksiksiz günlük kapsamı elde etmesini sağlar, böylece güçlü izleme ve sorun giderme yetenekleri garanti edilir.

IronPDF, kalıcı bir lisans, bir yıl yazılım bakımı ve kütüphane güncellemesi de dahil olmak üzere bir Lite bundle süresiz lisans sunar. IronPDF, geliştirme amaçlı ücretsiz bir lisans sunar, ancak zaman ve yeniden dağıtım konusunda kısıtlamalara tabidir. Ücretsiz deneme lisansı elde etmek için tıklayın. Çeşitli Iron Software ürünleri hakkında daha fazla bilgi edinmek için web sitesini ziyaret edin.

Sıkça Sorulan Sorular

Bir .NET konsol uygulamasına günlüklemeyi nasıl entegre edebilirim?

Prism.Plugin.Logging, çeşitli günlükleme sağlayıcılarını destekleyen ve yapılandırılmış bir günlükleme çerçevesi sunarak bir .NET konsol uygulamasına günlüklemeyi entegre edebilirsiniz. Bunu kurmak için Prism günlükleme paketini yükleyin, gerekli günlükleme nesnelerini oluşturun ve günlükleme hedeflerinizi ve seviyelerinizi yapılandırın.

Prism Logging'i IronPDF ile birleştirmenin hangi faydaları vardır?

Prism Logging'i IronPDF ile birleştirmek, uygulama bakımını ve sorun giderme yeteneklerini artırarak PDF günlük raporları oluşturmanıza olanak tanır. IronPDF, HTML günlük içeriğini PDF belgelerine dönüştürebilir, bu da günlükleri incelemek ve paylaşmak için taşıması kolay bir format sunar.

.NET'te günlük verilerini bir PDF belgesine nasıl dönüştürebilirim?

.NET'te günlük verilerini bir PDF belgesine dönüştürmek için, günlük verilerinizi HTML olarak işlemek ve ardından RenderHtmlAsPdf gibi yöntemleri kullanarak PDF'ye dönüştürmek için IronPDF'yi kullanın. Bu, ayrıntılı ve taşınabilir günlük raporları oluşturmanıza olanak tanır.

Prism.Plugin.Logging ile uyumlu günlükleme sağlayıcıları nelerdir?

Prism.Plugin.Logging, NLog, Serilog ve Microsoft.Extensions.Logging dahil olmak üzere birçok günlükleme sağlayıcısı ile uyumludur. Bu esneklik, geliştiricilerin projelerinin ihtiyaçlarına en uygun günlükleme sağlayıcısını seçmelerine olanak tanır.

Visual Studio'da bir Prism günlükleme projesini nasıl kurarım?

Visual Studio'da bir Prism günlükleme projesi kurmak için, yeni bir C# projesi oluşturun, NuGet Paket Yöneticisi kullanarak Prism günlükleme paketini yükleyin ve bir SyslogLogger nesnesi oluşturarak günlükleme çerçevesini başlatın ve günlük seviyelerini ve hedeflerini yapılandırın.

Prism.Plugin.Logging özel günlükleme yapılandırmaları için kullanılabilir mi?

Evet, Prism.Plugin.Logging, özel günlükleme yapılandırmalarını destekler. Günlük seviyelerini ayarlayabilir, özel günlükleyiciler tanımlayabilir ve günlük mesajlarını çeşitli hedeflere yönlendirebilirsiniz, bu da belirli uygulama gereksinimlerini karşılayan özelleştirilmiş bir günlükleme ayarı sağlar.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Teknoloji Direktörü

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ...

Daha Fazla Oku

Iron Destek Ekibi

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