NLog C# (Geliştiriciler İçin Nasıl Çalışır)
Günlük kaydı, yazılım geliştirmede önemli bir unsurdur. Geliştiricilerin uygulamaların davranışını takip etmelerine, sorunları gidermelerine ve kodlarının çeşitli ortamlarda nasıl performans gösterdiğini anlamalarına yardımcı olur. NLog, uygulamalarınızda sağlam ve esnek günlük kaydını uygulamayı kolaylaştıran popüler bir C# günlük kaydı çerçevesidir. Bu kapsamlı kılavuzda ve öğreticide, C#'daki NLog dünyasını keşfedeceğiz.
NLog Nedir?
NLog, .NET ve .NET Core uygulamaları için ücretsiz, açık kaynaklı bir günlük kaydı kütüphanesidir. Uygulamanızda mesajları kaydeden esnek ve son derece yapılandırılabilir bir yol sunar. Performansı, genişletilebilirliği ve kullanım kolaylığı nedeniyle .NET ekosisteminde yaygın olarak kullanılan ücretsiz bir günlük kaydı platformudur.
NLog ile Başlarken
ASP.NET Web Uygulamaları, ASP.NET WEB API'leri, Windows Form Uygulamaları, ASP.NET MVC Uygulamaları veya ihtiyaçlarımıza göre herhangi bir şekilde NLog kullanabiliriz. Tüm kullanım durumlarını göstermek için Konsol Uygulamasını kullanacağız.
NLog NuGet Paketini Yükleyin
NLog ile başlamanın için projenize NLog NuGet paketini kurmanız gerekecektir. Bunu, Visual Studio'daki NuGet Paket Yöneticisi üzerinden aşağıdaki adımları izleyerek yapabilirsiniz:
- "Araçlar" menüsünden "NuGet Paket Yöneticisi"ni seçin, ardından "Çözüm için NuGet Paketlerini Yönet"i seçin.
- Veya Çözüm Gezgini'nde projenize sağ tıklayın, "NuGet Paketlerini Yönet"i seçin ve "Gözat" seçeneğini tercih edin.
- NuGet Paket Yöneticisi penceresinde "Gözat" sekmesine tıklayın ve arama kutusuna "NLog" yazın.
- NLog paketini arama sonuçlarında görmelisiniz. Seçmek için üzerine tıklayın.
- NuGet Paket Yöneticisi penceresinin sağ tarafında, çözümünüzdeki projelerin bir listesi yer alır. NLog'u kurmak istediğiniz projeleri seçin.
- NLog paketinin istenen sürümünü sürüm açılır listesinden seçin. Gerekirse en son kararlı sürümü veya belirli bir sürümü seçebilirsiniz.
- Projeleri ve sürümü seçtikten sonra kurulum sürecini başlatmak için "Yükle" düğmesine tıklayın.
NuGet Paket Yöneticisi, NLog ve herhangi bir bağımlılıklarını indirip projektinize kuracaktır. İlerlemeyi çıktı penceresinde göreceksiniz.
NLog artık projenize başarıyla kuruldu ve C# kodunuzda günlük kaydı için kullanmaya başlayabilirsiniz.
NLog Yapılandırma Dosyası Oluşturma
NLog yapılandırma dosyası (genellikle nlog.config olarak adlandırılır) oluşturmak için bu adımları izleyebilirsiniz. Bu yapılandırma dosyası, NLog'un uygulamanızda nasıl davranacağını, günlük hedeflerini, düzenleyici düzenlerini ve kuralları içerecek şekilde belirleyecektir.
Projenizde yapılandırma dosyasını oluşturmak istediğiniz proje veya klasöre sağ tıklayın.
- "Ekle" > "Yeni Öğe..." seçeneğini seçin.
- "Yeni Çekipuçi Ekle" iletişim kutusunda "XML Dosyası" veya "XML" ara ve seç.
-
Dosyaya nlog.config adını verin ve "Ekle" düğmesine tıklayın.

- Yeni oluşturulan nlog.config dosyasını bir metin editör veya XML editörüyle açın.
- NLog.XML dosyasına aşağıdaki yapılandırmayı ekleyin. Aşağıda bir Konsol hedefi için mesajları güncelleyerek NLog yapılandırmasının temel bir örneği vardır. Bu Yapılandırma Dosyasını kendi ihtiyaçlarınıza göre özelleştirebilirsiniz:
Yapılandırma dosyası
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="console" xsi:type="Console" layout="${longdate}|${message}"/>
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="console" />
</rules>
</nlog>
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="console" xsi:type="Console" layout="${longdate}|${message}"/>
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="console" />
</rules>
</nlog>
C# kodunuzda, nlog.config dosyasından NLog yapılandırmasını yüklediğinizden emin olun. Bunu genellikle bir ASP.NET Core Startup.cs ( .NET 5 veya daha eski .NET Sürümü için), program.cs dosyasında ( .NET 6 ya da daha sonraki sürümler için) ya da bir konsol uygulamasının Main yönteminde yaparsınız.
using NLog;
internal class Program
{
// Create an instance of the Logger
private static Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
// Log a debug message
logger.Debug("This is a Debug Message");
// Pause the console for viewing output
Console.Read();
}
}
using NLog;
internal class Program
{
// Create an instance of the Logger
private static Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
// Log a debug message
logger.Debug("This is a Debug Message");
// Pause the console for viewing output
Console.Read();
}
}
Imports NLog
Friend Class Program
' Create an instance of the Logger
Private Shared logger As Logger = LogManager.GetCurrentClassLogger()
Shared Sub Main(ByVal args() As String)
' Log a debug message
logger.Debug("This is a Debug Message")
' Pause the console for viewing output
Console.Read()
End Sub
End Class
Yukarıdaki programın çıktısı aşağıdaki gibidir:

Bu örnekte, Logger sınıfının bir örneğini oluşturuyor ve Debug Seviyesindeki mesajları güncelleyerek kullanıyoruz. NLog'un desteklediği izleme seviyelerini keşfedelim.
Günlük Seviyeleri
NLog, her birinin kendi önemi olan birkaç günlük seviyeyi destekler:
- İzleme: Tipik olarak tanı amaçlı en ayrıntılı seviyedir.
- Hata Ayıklama: Geliştirme sırasında faydalı olabilecek hata ayıklama bilgilerinde kullanılır.
- Bilgi: Uygulamanın işleyişi hakkında genel bilgileri verir.
- Uyarı: Uygulamayı kesintiye uğratmayan potansiyel bir sorunu işaret eder.
- Hata: Uygulamayı çökertmeyen ancak araştırılması gereken bir hatayı işaret eder.
- Kritik: Hemen ele alınması gereken ciddi bir hatayı işaret eder.
Bu seviyelere göre günlük mesajlarını kategorize ederek, ciddiyetlerine göre onları kolayca filtreleyip önceliklendirebilirsiniz.
Aşağıda gösterildiği gibi nLog.Config dosyanızdaki kurallar etiketine minlevel="Trace" ayarlayın.
<rules>
<logger name="*" minlevel="Trace" writeTo="console" />
</rules>
<rules>
<logger name="*" minlevel="Trace" writeTo="console" />
</rules>
Tüm izleme seviyeleri için mesajları güncelleyerek kod yazalım.
using NLog;
internal class Program
{
// Create an instance of the Logger
private static Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
// Log messages of different tracking levels
logger.Trace("This is a Trace Message");
logger.Debug("This is a Debug Message");
logger.Info("This is an Info Message");
logger.Warn("This is a Warning Message");
logger.Error("This is an Error Message");
logger.Fatal("This is a Fatal Message");
// Pause the console for viewing output
Console.Read();
}
}
using NLog;
internal class Program
{
// Create an instance of the Logger
private static Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
// Log messages of different tracking levels
logger.Trace("This is a Trace Message");
logger.Debug("This is a Debug Message");
logger.Info("This is an Info Message");
logger.Warn("This is a Warning Message");
logger.Error("This is an Error Message");
logger.Fatal("This is a Fatal Message");
// Pause the console for viewing output
Console.Read();
}
}
Imports NLog
Friend Class Program
' Create an instance of the Logger
Private Shared logger As Logger = LogManager.GetCurrentClassLogger()
Shared Sub Main(ByVal args() As String)
' Log messages of different tracking levels
logger.Trace("This is a Trace Message")
logger.Debug("This is a Debug Message")
logger.Info("This is an Info Message")
logger.Warn("This is a Warning Message")
logger.Error("This is an Error Message")
logger.Fatal("This is a Fatal Message")
' Pause the console for viewing output
Console.Read()
End Sub
End Class
Programımız aşağıdaki gibi Konsolda mesajları güncellemiştir.

Şimdi, Konsolda mesajların güncellenmesinin bir örneğini gösterdik. Şimdi dosyada mesajları güncellemek için bir NLog hedefini yapılandıracağız.
Dosyada Günlük Mesajları
Dosya kaydı için yapılandırma dosyamızda Konsol hedefi yerine bir dosya hedefi ayarlamamız gerekiyor.
<targets>
<target xsi:type="File" name="fileTarget" fileName="D:\Logs\mylog.txt" layout="${longdate} ${level:uppercase=true} ${message}" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="fileTarget" />
</rules>
<targets>
<target xsi:type="File" name="fileTarget" fileName="D:\Logs\mylog.txt" layout="${longdate} ${level:uppercase=true} ${message}" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="fileTarget" />
</rules>
Şimdi, dosyada mesajları güncellemek için programı çalıştırın.

Günlükleme hedefleri
NLog, çeşitli günlük çıkış hedeflerini destekleyerek günlük mesajlarınızın nerede saklanması gerektiğini seçmenize olanak tanır. Bazı yaygın hedefler şunları içerir:
- Dosya: Bir veya daha fazla dosyaya mesajları günceller.
- Konsol: Konsola mesajları günceller.
- Veritabanı: Bir veritabanına (SQL Server, MySQL, Oracle, PostgreSQL, vb.) tabloya mesajları günceller.
- E-posta: Günlük mesajlarını e-posta olarak gönderir.
- Olay Günlüğü: Windows Olay Günlüğüne mesajları günceller.
- Özel Hedefler: Özel günlük hedefleri oluşturabilirsiniz, özgün gereksinimlerinize uygun olarak.
NLog'u bir veya daha fazla hedefi aynı anda kullanacak şekilde yapılandırabilirsiniz.
IronPDF Tanıtımı
IronPDF Hakkında Daha Fazla Keşfedin, C# ve VB.NET uygulamalarında PDF işlemlerini basitleştiren güçlü bir .NET kütüphanesidir. HTML içeriğini PDF formatına dönüştürme ve PDF belgeleri oluşturma, düzenleme ve manipüle etme için sağlam yetenekler sunar, bu da web geliştirme, raporlama ve belge yönetimini içeren birçok endüstriden geliştiriciler için önemli bir araç haline getirir.
IronPDF'nin öne çıkan özelliği, HTML'den PDF'ye dönüştürme işlevselliğidir, bu işlevsellik düzen ve stillerinizi korur. Web içeriğinden raporlar, faturalar ve belge oluşturmak için idealdir. HTML dosyaları, URL'ler ve HTML dizgileri kolayca PDF'lere dönüştürülebilir.
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}
Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
' 1. Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
' 2. Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
' 3. Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf")
End Sub
End Class
Haydi, günlükleme ile PDF oluşturalım.
Günlükleme ile PDF Oluşturma
İlk adım, projemize IronPDF kütüphanesini kurmaktır. Bunu, Visual Studio'daki NuGet Paket Yöneticisi veya NuGet CLI ile yapabiliriz. Projenizi açın ve Paket Yöneticisi Konsoluna şu komutu yazın.
Install-Package IronPdf
Bu komut, projemize gerekli tüm bağımlılıklarla birlikte IronPDF'yi kuracaktır.
HTML'den günlükleme ile PDF dosyası oluşturmak için aşağıdaki kodu yazın.
using NLog;
using IronPdf;
internal class Program
{
// Create an instance of the Logger
private static Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
logger.Info("Initializing Chrome PDF Renderer");
ChromePdfRenderer renderer = new ChromePdfRenderer();
logger.Info("Creating PDF From HTML String");
var pdf = renderer.RenderHtmlAsPdf("<h1>This is my Sample PDF<h1>");
logger.Info("Saving PDF File");
pdf.SaveAs(@"D:\myPDF.pdf");
}
}
using NLog;
using IronPdf;
internal class Program
{
// Create an instance of the Logger
private static Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
logger.Info("Initializing Chrome PDF Renderer");
ChromePdfRenderer renderer = new ChromePdfRenderer();
logger.Info("Creating PDF From HTML String");
var pdf = renderer.RenderHtmlAsPdf("<h1>This is my Sample PDF<h1>");
logger.Info("Saving PDF File");
pdf.SaveAs(@"D:\myPDF.pdf");
}
}
Imports NLog
Imports IronPdf
Friend Class Program
' Create an instance of the Logger
Private Shared logger As Logger = LogManager.GetCurrentClassLogger()
Shared Sub Main(ByVal args() As String)
logger.Info("Initializing Chrome PDF Renderer")
Dim renderer As New ChromePdfRenderer()
logger.Info("Creating PDF From HTML String")
Dim pdf = renderer.RenderHtmlAsPdf("<h1>This is my Sample PDF<h1>")
logger.Info("Saving PDF File")
pdf.SaveAs("D:\myPDF.pdf")
End Sub
End Class
Yukarıdaki kod parçacığı, aşağıda gösterildiği gibi dosyada güncellenen mesaj ile bir PDF dosyası oluşturacak.
Günlükleme ve PDF Dosyası

Sonuç
Sonuç olarak, NLog, C# uygulamalarında etkili günlükleme için temel bir araç olarak öne çıkmıştır, geliştiricilere günlük verileri yakalamak, kategorize etmek ve yönetmek için sağlam bir çerçeve sunar. Esnekliği ve kullanım kolaylığı, çeşitli alanlardaki günlük ihtiyaçları için vazgeçilmez bir seçim haline getirir. Ayrıca, IronPDF gibi, .NET uygulamalarında PDF oluşturma ve manipülasyonunu kolaylaştıran tamamlayıcı kütüphanelerle birleştiğinde, geliştiriciler PDF tabanlı günlükler ve raporlar oluşturma yönetim yeteneklerini genişletebilir. IronPDF'nin ücretsiz denemesi özelliklerini test etmek için IronPDF'nin sunduğunu belirtmekte fayda var. İhtiyaçlarınıza uygunsa, IronPDF'nin yeteneklerine sürekli erişim sağlamanın yanı sıra, ek avantajlar ve projelerinizin, özellikle PDF ile ilgili işlevselliklerin sorunsuz entegrasyonu için destek sağlayan bir ticari lisansı tercih edebilirsiniz.
NLog ve IronPDF'nin gücünü bir arada kullanarak, geliştiriciler yalnızca uygulamalarının davranışlarını anlamakla kalmaz, aynı zamanda raporlama ve belge yönetimi süreçlerini geliştirebilir, yazılımlarının verimli, sürdürülebilir ve iyi belgelenmiş yapılandırılmış günlüklemeye sahip olduğundan emin olabilirler.
Sıkça Sorulan Sorular
NLog, C# uygulamalarında günlüklemeyi nasıl geliştirir?
NLog, C# uygulamaları için güçlü ve esnek bir kayıt tutma çerçevesi sunar. Geliştiricilerin, bir yapılandırma dosyasında kayıt hedeflerini ve kurallarını tanımlayarak kolayca kayıt tutma işlemlerini uygulamalarına olanak tanır, Trace, Debug, Info, Warn, Error ve Fatal gibi çeşitli kayıt tutma seviyelerini destekler.
.NET uygulamasında NLog'u kurma süreci nedir?
.NET uygulamasında NLog kurmak için, NLog NuGet paketini yüklemeli ve nlog.config dosyasında kayıt hedeflerini ve kurallarını yapılandırmalısınız. Bu kurulum, logların yönlendirileceği yerleri belirtmenizi sağlar, örneğin dosyalar, konsollar, veritabanları veya e-postalar gibi.
NLog kullanarak mesajları bir veritabanına nasıl kaydedebilirim?
NLog kullanarak veritabanına mesaj kaydetmek için, nlog.config dosyasında bir veritabanı hedefi ayarlamanız gerekir. Bağlantı dizesi ve günlük girişleri için gerekli tablo veya saklı prosedür detaylarını belirtmelisiniz.
NLog, günlük mesajlarını e-posta yoluyla göndermek için kullanılabilir mi?
Evet, NLog, nlog.config dosyasında bir e-posta hedefi yapılandırarak log mesajlarını e-posta ile gönderebilir. SMTP sunucusu bilgilerini, alıcı e-posta adreslerini ve diğer e-posta ayarlarını sağlamanız gerekecektir.
.NET’de PDF oluşturma için IronPDF kullanmanın faydaları nelerdir?
IronPDF, PDF oluşturma, düzenleme ve dönüştürme işlemlerini basitleştiren güçlü bir .NET kütüphanesidir. HTML'den PDF'ye dönüştürmeyi destekler, geliştiricilere HTML dizgilerinden, dosyalardan veya URL'lerden PDF oluşturmayı sağlayarak raporlama ve belge yönetimi süreçlerini geliştirir.
C# uygulamanızda PDF oluşturma ile birlikte loglamayı nasıl entegre edebilirim?
NLog'u bir C# uygulamasında IronPDF ile entegre edebilirsiniz; uygulama olaylarını kaydetmek için NLog'u ve PDF oluşturmak için IronPDF'i kullanabilirsiniz. Bu kombinasyon, log bilgilerini içeren detaylı PDF raporları oluşturmanıza olanak tanır.
NLog yapılandırma sorunları için bazı yaygın sorun giderme adımları nelerdir?
NLog yapılandırma sorunları için yaygın sorun giderme adımları arasında nlog.config dosyasını sözdizimi hataları için doğrulamak, günlük hedefleri için doğru dosya yolları ve izinlerinden emin olmak ve kaydı etkileyebilecek uygulama hatalarını kontrol etmek yer alır.
IronPDF'nin yeteneklerini satın almadan önce nasıl test edebilirim?
IronPDF, geliştiricilerin özelliklerini test etmelerine olanak tanıyan ücretsiz bir deneme sürümü sunar. Bu deneme süresi, IronPDF'nin PDF oluşturma, düzenleme ve dönüştürme yeteneklerini değerlendirmek için ticari bir lisans tercih etmeden önce bir fırsat sağlar.




