C# Log (Geliştiriciler için Nasıl Çalışır)
Loglama, yazılım geliştirmelerinin ayrılmaz bir parçasıdır; geliştiricilere uygulama davranışları hakkında değerli içgörüler sunar ve hata ayıklama, izleme ve sorun giderme işlemlerine yardımcı olur. C# ve SQL Server alanında, etkili yapısal loglama API mekanizmaları, uygulamaların sağlamlığı ve güvenilirliği için oldukça önemlidir. Bu kapsamlı kılavuz, log sağlayıcılarının önemini, C#'ta mevcut çeşitli loglama çerçeveleri, loglama çerçevesi uygulama için en iyi uygulamalar ve daha gelişmiş teknikleri keşfederek C# Log Uygulamalarında loglamada ustalaşmanıza yardımcı olacaktır. Ayrıca IronPDF for PDF Generation kullanarak PDF log mesaj raporlarını nasıl oluşturacağınızı da tartışacağız.
1. Neden Günlük Tutma Önemlidir
Teknik detaylara girmeden önce, yazılım geliştirmede neden günlük tutmanın vazgeçilmez olduğunu anlayalım:
- Hata Ayıklama: Günlük tutma, geliştiricilere geliştirme yaşam döngüsü boyunca sorunların belirlenmesinde ve teşhis edilmesinde yardımcı olur. Detaylı günlük dosyası mesajları, yürütme akışı, değişken değerleri ve potansiyel hatalar hakkında değerli bilgiler sağlar, etkili hata ayıklamayı kolaylaştırır.
- İzleme: Üretim ortamlarında, günlük tutma bir izleme aracı olarak görev yapar, operasyon ekiplerinin uygulama davranışını izlemelerine, anormallikleri tespit etmelerine ve sorunları proaktif bir şekilde çözmelerine olanak tanır. İzleme günlükleri, performans darboğazlarını, güvenlik ihlallerini ve kritik olayları belirlemeye yardımcı olur.
- Denetim ve Uyumluluk: Günlük tutma, finans ve sağlık gibi çeşitli endüstrilerde genellikle yasal bir gerekliliktir. En azından temel bir günlük seviyesi ile kapsamlı günlükler hesap verebilirliği sağlar, denetimleri kolaylaştırır ve veri koruma düzenlemelerine uyumu gösterir.
- Performans Optimizasyonu: Günlüklerin analizi, geliştiricilerin performans optimizasyonu için alanları, örneğin verimsiz veritabanı sorguları veya yavaş dış hizmet çağrıları gibi, belirlemelerini sağlar. Bu yönlerin optimizasyonu, uygulama performansını ve ölçeklenebilirliğini artırır.
2. C# Loglama Çerçeveleri
C# farklı özelliklere ve yeteneklere sahip çeşitli günlük çerçeveleri sunar. Bazı popüler kayıt sağlayıcılarını ve kod örneklerini keşfedelim:
2.1. NLog
NLog, kapsamlı yapılandırma dosyası seçeneklerine sahip yüksek performanslı bir günlük kütüphanesidir. Bir C# uygulamasında günlük mesajları yazmak için NLog kullanmanın basit bir örneği:
// Install-Package NLog
using NLog;
public class Program
{
// Initialize a logger instance from NLog
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
// Log various levels of messages
logger.Info("Info message");
logger.Warn("Warning message");
logger.Error("Error message");
logger.Fatal("Fatal error message");
}
}
// Install-Package NLog
using NLog;
public class Program
{
// Initialize a logger instance from NLog
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
// Log various levels of messages
logger.Info("Info message");
logger.Warn("Warning message");
logger.Error("Error message");
logger.Fatal("Fatal error message");
}
}
' Install-Package NLog
Imports NLog
Public Class Program
' Initialize a logger instance from NLog
Private Shared ReadOnly logger As Logger = LogManager.GetCurrentClassLogger()
Shared Sub Main(ByVal args() As String)
' Log various levels of messages
logger.Info("Info message")
logger.Warn("Warning message")
logger.Error("Error message")
logger.Fatal("Fatal error message")
End Sub
End Class

2.2. Serilog
Serilog, yapılandırılmış günlükleme API'sine ve modern günlükleme arka uçları ile sorunsuz entegrasyona odaklanır. Serilog'u bir C# uygulamasında nasıl kullanabileceğiniz:
// Install-Package Serilog
// Install-Package Serilog.Sinks.Console
using Serilog;
public class Program
{
static void Main(string[] args)
{
// Configure Serilog to write log messages to the console
Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.CreateLogger();
// Log messages at various levels
Log.Debug("Debug message");
Log.Information("Info message");
Log.Warning("Warning message");
Log.Error("Error message");
Log.Fatal("Fatal error message");
}
}
// Install-Package Serilog
// Install-Package Serilog.Sinks.Console
using Serilog;
public class Program
{
static void Main(string[] args)
{
// Configure Serilog to write log messages to the console
Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.CreateLogger();
// Log messages at various levels
Log.Debug("Debug message");
Log.Information("Info message");
Log.Warning("Warning message");
Log.Error("Error message");
Log.Fatal("Fatal error message");
}
}
' Install-Package Serilog
' Install-Package Serilog.Sinks.Console
Imports Serilog
Public Class Program
Shared Sub Main(ByVal args() As String)
' Configure Serilog to write log messages to the console
Log.Logger = (New LoggerConfiguration()).WriteTo.Console().CreateLogger()
' Log messages at various levels
Log.Debug("Debug message")
Log.Information("Info message")
Log.Warning("Warning message")
Log.Error("Error message")
Log.Fatal("Fatal error message")
End Sub
End Class

2.3. Microsoft.Extensions.Logging
Microsoft.Extensions.Logging, .NET Core ekosistemine dahil edilmiş hafif bir günlük soyutlamadır. Bunu kullanmanın basit bir örneği:
// Install-Package Microsoft.Extensions.Logging
using Microsoft.Extensions.Logging;
public class Program
{
static void Main(string[] args)
{
// Create a logger factory with console output
ILoggerFactory loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddConsole(); // Add console logger
});
// Create a logger from the factory
ILogger logger = loggerFactory.CreateLogger<Program>();
// Log messages at various levels
logger.LogDebug("Debug message");
logger.LogInformation("Info message");
logger.LogWarning("Warning message");
logger.LogError("Error message");
logger.LogCritical("Critical error message");
}
}
// Install-Package Microsoft.Extensions.Logging
using Microsoft.Extensions.Logging;
public class Program
{
static void Main(string[] args)
{
// Create a logger factory with console output
ILoggerFactory loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddConsole(); // Add console logger
});
// Create a logger from the factory
ILogger logger = loggerFactory.CreateLogger<Program>();
// Log messages at various levels
logger.LogDebug("Debug message");
logger.LogInformation("Info message");
logger.LogWarning("Warning message");
logger.LogError("Error message");
logger.LogCritical("Critical error message");
}
}
' Install-Package Microsoft.Extensions.Logging
Imports Microsoft.Extensions.Logging
Public Class Program
Shared Sub Main(ByVal args() As String)
' Create a logger factory with console output
Dim loggerFactory As ILoggerFactory = LoggerFactory.Create(Sub(builder)
builder.AddConsole() ' Add console logger
End Sub)
' Create a logger from the factory
Dim logger As ILogger = loggerFactory.CreateLogger(Of Program)()
' Log messages at various levels
logger.LogDebug("Debug message")
logger.LogInformation("Info message")
logger.LogWarning("Warning message")
logger.LogError("Error message")
logger.LogCritical("Critical error message")
End Sub
End Class

3. C#'ta Loglama için En İyi Uygulamalar
C# uygulamalarınızda etkili günlük tutma sağlamak için şu en iyi uygulamaları dikkate alın:
- Açıklayıcı Günlük Mesajları Kullanın: Kaydedilen olaylar hakkında anlamlı bağlam sağlayan güncellemeler yazın. Sorun gidermede yardımcı olmak için zaman damgaları, hata kodları, kullanıcı kimlikleri ve işlem detayları gibi ilgili bilgileri ekleyin.
- Uygun Günlük Seviyelerini Seçin: Kaydedilen olayların şiddetine göre farklı günlük seviyeleri (örn. DEBUG, INFO, WARN, ERROR, FATAL) kullanın. Aşağıdaki günlük seviyelerini (örn. DEBUG) ayrıntılı hata ayıklama bilgileri için ve daha yüksek seviyeleri (örn. ERROR, FATAL) hemen dikkat gerektiren kritik hatalar için ayırın.
- Günlük Döndürmeyi Uygulayın: Günlük dosyalarının sonsuz büyümesini önlemek için günlük döndürme mekanizmaları uygulayın. Eski günlükleri arşivlemek ve yönetilebilir günlük boyutlarını sürdürmek için maksimum dosya boyutları veya zamana dayalı döndürme yapılandırın.
- Hassas Bilgileri Güvenceye Alın: Şifreler, API anahtarları ve kişisel tanımlanabilir bilgiler (PII) gibi hassas bilgileri kaydetmekten kaçının. Günlüklerdeki hassas verileri korumak için uygun redaksiyon veya karartma teknikleri uygulayın.
- Günlük Yönetimini Merkezileştirin: Günlükleri birden fazla kaynaktan toplamak ve analiz etmek için Elasticsearch, Splunk veya Azure Application Insights gibi merkezi günlük kayıt çözümlerini kullanmayı düşünün. Merkezi günlük kaydı, günlük aramayı, analiz etmeyi ve görselleştirmeyi kolaylaştırarak sorun giderme yeteneklerini artırır.
- Yapılandırılmış Günlük Kaydını Etkinleştirin: Makine tarafından okunabilir formatta günlük olaylarını temsil etmek için JSON veya anahtar-değer çiftleri gibi yapılandırılmış günlük formatlarını benimseyin. Yapılandırılmış günlükler, düz metin günlüklerine göre daha kolay ayrıştırma, filtreleme ve analiz sağlar.
- Günlük Sağlığını İzleyin: Kesintisiz günlük toplama ve analizini sağlamak için günlük altyapısının sağlık ve kullanılabilirliğini izleyin. Disk alanı tükenmesi, ağ bağlantı sorunları veya hizmet kesintisi gibi kritik günlük sorunları için uyarılar uygulayın.
4. Gelişmiş Günlük Teknikleri
Temel seviyenin ötesinde, birkaç gelişmiş günlük tekniği, C#'ta günlük yeteneklerinizi daha da geliştirebilir:
- Bağlamsal Günlükleme: Dağıtılmış sistemlerde yürütme akışını izlemek için HTTP istek başlıkları, oturum kimlikleri veya korelasyon kimlikleri gibi bağlamsal bilgilerle günlük olaylarını zenginleştirin.
- Asenkron Günlükleme: Günlükleme işlemlerini arka plan iş parçacıklarına veya asenkron görevlere devrederek uygulama performansını artırın. Asenkron günlükleme, ana yürütme iş parçacığının engellenmesini engeller ve uygulamanın duyarlılığı üzerindeki etkisini en aza indirir.
- İstisna Günlükleme ve İşleme: İstisnaların ayrıntılı bilgilerini, yığın izlerini, iç istisnaları ve istisna bağlamını yakalamak için yapılandırılmış istisna günlüklemesini uygulatın. İstisnaları zarif bir şekilde ele alın ve hata giderme ve hata kurtarma için uygun günlük seviyelerinde kayıt yapın.
- Performans Günlükleme: Yanıt süreleri, veri işleme hızı ve kaynak kullanımı gibi uygulama performansı metriklerini ölçmek ve analiz etmek için kritik kod yollarını performans günlüklemesiyle enstrümanlandırın. Performans günlükleri, performans darboğazlarını belirlemeye ve uygulama verimliliğini optimize etmeye yardımcı olur.
- Günlük Korelasyonu ve Birleştirme: Günlük mesajlarına benzersiz kimlikler veya iz kimlikleri ekleyerek dağıtılmış bileşenler veya mikro hizmetler arasında ilişkili günlük olaylarını ilişkilendirin. Dağıtılmış sistem davranışı ve sorun giderimi üzerinde bütünsel bir görünüm için ilişkili günlükleri birleştirin.
5. IronPDF: Günlük Raporları Oluşturmak İçin En İyi C# Kütüphanesi
IronPDF, geliştiricilerin .NET uygulamaları içinde sorunsuz bir şekilde PDF belgeleri oluşturmasını, düzenlemesini ve yönlendirmesini sağlayan kapsamlı bir C# kütüphanesidir. PDF raporları oluşturmanız, HTML'yi PDF'ye dönüştürmeniz veya PDF dosyalarından metin çıkarmanız gereksinimi fark etmeksizin, IronPDF ihtiyaçlarınızı karşılamak için zengin bir özellik seti sunar. Sezgisel API'si ve sağlam işlevselliği ile IronPDF, PDF oluşturma ve yönlendirme görevlerini basitleştirerek geliştiricilerin uygulamalarını yüksek kaliteli PDF belge kapasiteleri ile zenginleştirmesini sağlar.
5.1. IronPDF Kullanarak Günlük Raporları Oluşturma
Günlük verilerinden PDF raporları oluşturmak, uygulama davranışı ve performansı hakkında paydaşlara değerli içgörüler sağlayan birçok uygulamada yaygın bir gereksinimdir. Bu örnekte, IronPDF kullanarak günlük girişlerini ve ilgili metaverileri içeren bir günlük raporu nasıl oluşturacağınızı göstereceğiz.
Adım 1: IronPDF Paketini Yükleyin
Öncelikle, projenizde IronPDF paketinin yüklü olduğundan emin olun. Bunu NuGet Paket Yöneticisi veya NuGet Paket Konsolu aracılığıyla yükleyebilirsiniz:
Install-Package IronPdf
Adım 2: Günlük Verisi Oluşturun
Gösterim amaçlı olarak, uygulamamızda birkaç örnek günlük verisi oluşturalım. Tercih ettiğiniz günlük kayıt çerçevesini kullanabilir veya basitçe elle günlük girişleri kaydedebilirsiniz:
using System;
using System.Collections.Generic;
public class LogEntry
{
public DateTime Timestamp { get; set; }
public string Message { get; set; }
public LogLevel Level { get; set; }
}
public enum LogLevel
{
Info,
Warning,
Error
}
public class LogService
{
public List<LogEntry> GetLogEntries()
{
// Sample log entries
var logEntries = new List<LogEntry>
{
new LogEntry { Timestamp = DateTime.Now, Message = "Application started.", Level = LogLevel.Info },
new LogEntry { Timestamp = DateTime.Now, Message = "Warning: Disk space low.", Level = LogLevel.Warning },
new LogEntry { Timestamp = DateTime.Now, Message = "Error: Database connection failed.", Level = LogLevel.Error }
};
return logEntries;
}
}
using System;
using System.Collections.Generic;
public class LogEntry
{
public DateTime Timestamp { get; set; }
public string Message { get; set; }
public LogLevel Level { get; set; }
}
public enum LogLevel
{
Info,
Warning,
Error
}
public class LogService
{
public List<LogEntry> GetLogEntries()
{
// Sample log entries
var logEntries = new List<LogEntry>
{
new LogEntry { Timestamp = DateTime.Now, Message = "Application started.", Level = LogLevel.Info },
new LogEntry { Timestamp = DateTime.Now, Message = "Warning: Disk space low.", Level = LogLevel.Warning },
new LogEntry { Timestamp = DateTime.Now, Message = "Error: Database connection failed.", Level = LogLevel.Error }
};
return logEntries;
}
}
Imports System
Imports System.Collections.Generic
Public Class LogEntry
Public Property Timestamp() As DateTime
Public Property Message() As String
Public Property Level() As LogLevel
End Class
Public Enum LogLevel
Info
Warning
[Error]
End Enum
Public Class LogService
Public Function GetLogEntries() As List(Of LogEntry)
' Sample log entries
Dim logEntries = New List(Of LogEntry) From {
New LogEntry With {
.Timestamp = DateTime.Now,
.Message = "Application started.",
.Level = LogLevel.Info
},
New LogEntry With {
.Timestamp = DateTime.Now,
.Message = "Warning: Disk space low.",
.Level = LogLevel.Warning
},
New LogEntry With {
.Timestamp = DateTime.Now,
.Message = "Error: Database connection failed.",
.Level = LogLevel.Error
}
}
Return logEntries
End Function
End Class
Adım 3: PDF Raporu Oluşturun
Şimdi, günlük verisinden PDF raporu üretmek için IronPDF kullanalım.
using IronPdf;
using System.Collections.Generic;
public class PdfReportGenerator
{
public void GenerateLogReport(List<LogEntry> logEntries)
{
var renderer = new ChromePdfRenderer();
var htmlContent = "<h1>Log Report</h1><hr/><ul>";
// Format log entries into an HTML list
foreach (var entry in logEntries)
{
htmlContent += $"<li><strong>{entry.Timestamp}</strong> - [{entry.Level}] {entry.Message}</li>";
}
htmlContent += "</ul>";
// Render the HTML content to a PDF
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Save the PDF to a file
var outputPath = "LogReport.pdf";
pdf.SaveAs(outputPath);
}
}
using IronPdf;
using System.Collections.Generic;
public class PdfReportGenerator
{
public void GenerateLogReport(List<LogEntry> logEntries)
{
var renderer = new ChromePdfRenderer();
var htmlContent = "<h1>Log Report</h1><hr/><ul>";
// Format log entries into an HTML list
foreach (var entry in logEntries)
{
htmlContent += $"<li><strong>{entry.Timestamp}</strong> - [{entry.Level}] {entry.Message}</li>";
}
htmlContent += "</ul>";
// Render the HTML content to a PDF
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Save the PDF to a file
var outputPath = "LogReport.pdf";
pdf.SaveAs(outputPath);
}
}
Imports IronPdf
Imports System.Collections.Generic
Public Class PdfReportGenerator
Public Sub GenerateLogReport(ByVal logEntries As List(Of LogEntry))
Dim renderer = New ChromePdfRenderer()
Dim htmlContent = "<h1>Log Report</h1><hr/><ul>"
' Format log entries into an HTML list
For Each entry In logEntries
htmlContent &= $"<li><strong>{entry.Timestamp}</strong> - [{entry.Level}] {entry.Message}</li>"
Next entry
htmlContent &= "</ul>"
' Render the HTML content to a PDF
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
' Save the PDF to a file
Dim outputPath = "LogReport.pdf"
pdf.SaveAs(outputPath)
End Sub
End Class
Adım 4: Günlük Raporunu Oluşturun ve Görüntüleyin
Son olarak, günlük verilerini almak ve PDF raporunu oluşturmak için LogService örneğini oluşturun.
class Program
{
static void Main(string[] args)
{
var logService = new LogService();
var logEntries = logService.GetLogEntries();
var pdfGenerator = new PdfReportGenerator();
pdfGenerator.GenerateLogReport(logEntries);
}
}
class Program
{
static void Main(string[] args)
{
var logService = new LogService();
var logEntries = logService.GetLogEntries();
var pdfGenerator = new PdfReportGenerator();
pdfGenerator.GenerateLogReport(logEntries);
}
}
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim logService As New LogService()
Dim logEntries = logService.GetLogEntries()
Dim pdfGenerator = New PdfReportGenerator()
pdfGenerator.GenerateLogReport(logEntries)
End Sub
End Class
Bu kod, örnek günlük verilerini LogService kullanarak alır, günlük raporunun HTML temsilini oluşturur, IronPDF'nin ChromePdfRenderer kullanarak PDF'ye dönüştürür, PDF'yi dosyaya kaydeder ve görüntülemek için açar.

6. Sonuç
Günlük kaydı, modern yazılım geliştirme için kritik bir bileşendir ve geliştiricilere uygulama davranışı ve performansı hakkında paha biçilmez içgörüler sunar. İster geliştirme sırasında kodu hata ayıklamada ister üretim ortamlarında uygulama sağlığını izlerken, günlük kayıt sistemi operasyonlarına yönelik temel bir görünüm sağlar. C#'ta mevcut olan birçok günlük çerçevesiyle, geliştiriciler ihtiyaçlarına en uygun aracı seçme esnekliğine sahiptir, performansı için NLog'u, yapılandırılmış günlük kayıt yetenekleri için Serilog'u veya hafif soyutlama için Microsoft.Extensions.Logging'i tercih edebilirler.
IronPDF C# PDF Library, C# uygulamaları içinde PDF günlük raporları üretme konusunda güçlü bir araç olarak öne çıkmaktadır. Sezgisel API'si, günlük verilerini görsel olarak çekici ve eyleme dönüştürülebilir PDF belgelere dönüştürme sürecini basitleştirir. IronPDF'yi uygulamalarına entegre eden geliştiriciler, günlük kayıt yeteneklerini geliştirebilir ve paydaşlara uygulama davranışı hakkında kapsamlı içgörüler sağlayabilir. Ayrıntılı denetim günlükleri oluşturmaktan performans raporları oluşturmaya kadar, IronPDF, geliştiricilere C# uygulamalarında PDF belge üretiminin tam potansiyelini kullanma yetkisi verir, geliştirmenin ve bakımların deneyimini daha da zenginleştirir.
IronPDF ve özellikleri hakkında daha fazla bilgi edinmek için resmi IronPDF Lisanslama Belgeleri sayfasını ziyaret edin ve üretime nasıl dönüştürebileceğinizi keşfedin.
Sıkça Sorulan Sorular
Log verilerini C# ile bir PDF raporuna nasıl dönüştürebilirim?
Log verilerini IronPDF kullanarak bir PDF raporuna dönüştürebilirsiniz. İlk olarak, log verilerinizi bir HTML yapısında biçimlendirin, ardından IronPDF'nin dönüştürme yeteneklerini kullanarak HTML'yi bir PDF belgesine çevirin.
C#'da popüler loglama frameworkleri nelerdir?
C#'da popüler loglama frameworklerinden bazıları, yapılandırılmış loglama ve yüksek performans gibi benzersiz özellikler sunan NLog, Serilog ve Microsoft.Extensions.Logging'dir.
C#'da yapılandırılmış loglamayı kullanmanın avantajı nedir?
Yapılandırılmış loglama, log verilerini JSON veya anahtar-değer çiftleri gibi formatlarda saklayarak daha kolay ayrıştırma ve analiz imkanı sağlar, bu da geleneksel metin loglarına göre daha avantajlıdır.
Asenkron loglama, bir C# uygulamasına nasıl fayda sağlar?
Asenkron loglama, loglama işlemlerini arka plan görevlerine yönlendirdiği için performansı artırır, ana yürütüm dizisinin engellenmemesini sağlayarak uygulama yanıtını geliştirir.
Loglama, yazılım geliştirme için neden kritik kabul edilir?
Loglama, hata ayıklama, uygulama performansını izleme, denetim, uyumluluk ve performans optimizasyonu için kritik öneme sahiptir; çünkü uygulamanın nasıl davrandığına dair içgörüler sağlar.
C# uygulamalarında loglamayı uygulamak için bazı en iyi uygulamalar nelerdir?
En iyi uygulamalar, açıklayıcı log mesajları kullanmayı, uygun log seviyeleri seçmeyi, log döndürme uygulamayı, hassas verileri güvence altına almayı ve merkezi bir log yönetimi oluşturmaya yönelik işlemleri içerir.
Log girdilerini PDF belgelerine dönüştürmek için IronPDF nasıl kullanılabilir?
IronPDF, log girdilerini önce HTML formatında biçimlendirerek ve ardından IronPDF'nin RenderHtmlAsPdf yöntemini kullanarak bir PDF üretmenizi sağlar.
C# uygulamalarında bağlamsal loglamanın rolü nedir?
Bağlamsal loglama, HTTP istek başlıkları veya oturum ID'leri gibi ek verileri log mesajlarına ekleyerek, yürütüm akışını izlemeye ve hata ayıklama ve sorun giderme işlemlerini basitleştirmeye yardımcı olur.
Log korelasyonu ve toplama, dağıtık sistemlerde hata ayıklamayı nasıl geliştirir?
Log mesajlarına benzersiz tanımlayıcılar veya iz ID'leri ekleyerek, ilgili olayların izlenmesini sağlayarak dağıtık sistemlerde kapsamlı analiz için hata ayıklamayı geliştirir.
IronPDF kullanarak bir PDF log raporu oluşturmanın süreci nedir?
Süreç, IronPDF'yi yüklemeyi, log verilerinizi HTML formatında hazırlamayı ve ardından IronPDF'nin dönüştürme işlevlerini kullanarak HTML içeriğini bir PDF dosyasına dönüştürmeyi içerir, bu dosya daha sonra kaydedilebilir ve paylaşılabilir.




