NLog C# (Geliştiriciler İçin Nasıl Çalışır)
Log kaydı, yazılım geliştirmenin önemli bir yönüdür. Geliştiricilerin uygulamalarının davranışını takip etmelerine, sorunları çözmelerine ve kodlarının çeşitli ortamlarda nasıl çalıştığı hakkında içgörü kazanmalarına yardımcı olur. NLog, uygulamalarınızda gelişmiş ve esnek log kaydı uygulamayı kolaylaştıran popüler bir C# log kayıt çerçevesidir. Bu kapsamlı rehber ve öğreticide, C#'da NLog dünyasını keşfedeceğiz.
NLog Nedir?
NLog, .NET ve .NET Core uygulamaları için ücretsiz, açık kaynak kodlu bir loglama kütüphanesidir. Uygulamanızda mesajları loglamak için esnek ve oldukça yapılandırılabilir bir yol sağlar. NLog, performansı, genişletilebilirliği ve kullanım kolaylığı nedeniyle .NET ekosisteminde yaygın olarak kullanılan ücretsiz bir loglama platformudur.
NLog ile Ilk Adımlar
ASP.NET Web Uygulamaları, ASP.NET WEB API'ler, Windows Form Uygulamaları, ASP.NET MVC Uygulamaları veya ihtiyaçımıza göre herhangi bir türde NLog kullanabiliriz. Tüm kullanım senaryolarını göstermek için Konsol Uygulaması'nı kullanacağız.
NLog NuGet Paketini Yükleyin
NLog ile işe başlamak için, projenize NLog NuGet paketini yüklemeniz gerekecek. Bunu, Visual Studio'daki NuGet Paket Yöneticisi aracılığıyla şu adımları izleyerek yapabilirsiniz:
- 'Araçlar' menüsünde, 'NuGet Paket Yöneticisi'ni seçin ve ardından 'Çözüme NuGet Paketlerini Yönet' öğesini seçin.
- Veya, Proje Gezgini'nde projenize sağ tıklayın, "NuGet Paketlerini Yönet" seçeneğini seçin ve "Gözat" öğesini seçin.
- NuGet Paket Yöneticisi penceresinde "Gözat" sekmesine tıklayın ve arama kutusuna "NLog" yazın.
- Arama sonuçlarında NLog paketini 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 bulunur. NLog'u yüklemek istediğiniz projeleri seçin.
- NLog paketinin istediğiniz sürümünü sürüm açılır menüsünden 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, kurulumu başlatmak için "Yükle" düğmesine tıklayın.
NuGet Paket Yöneticisi, NLog ve gerekli bağımlılıkları indirip yükleyecektir. İlerlemeyi çıktı penceresinde göreceksiniz.
NLog artık projenize başarıyla yüklendi ve onu C# kodunuz içinde günlük kaydı için kullanmaya başlayabilirsiniz.
NLog Yapılandırma Dosyası Oluştur
Bir NLog yapılandırma dosyası (genellikle nlog.config olarak adlandırılır) oluşturmak için şu adımları izleyebilirsiniz. Bu yapılandırma dosyası, NLog'un uygulamanızda nasıl davranacağını belirleyecektir, log hedefleri, düzenleyici yerleştiriciler ve kurallar dahil.
Projenizde, yapılandırma dosyasını oluşturmak istediğiniz projeye veya istenen klasöre sağ tıklayın.
- "Ekle" > "Yeni Öğe..." öğesini seçin.
- "Yeni Öğe Ekle" iletişim kutusunda "XML Dosyası" veya "XML" arayın ve seçin.
-
Dosyayı nlog.config olarak adlandırın ve "Ekle" düğmesine tıklayın.

- Yeni oluşturulan nlog.config dosyasını bir metin düzenleyici veya XML düzenleyici ile açın.
- NLog.XML dosyasına aşağıdaki yapılandırmayı ekleyin. Aşağıda, bir Konsol hedefi için mesajları günlüğe kaydeden temel bir NLog yapılandırmasının bir örneği bulunmaktadır. Bu Yapılandırma Dosyasını ihtiyaçlarınıza uygun hale getirebilirsiniz:
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 yapılandırmasını nlog.config dosyasından yüklediğinizden emin olun. Genellikle bunu, uygulamanın başlangıç kodunda, örneğin bir ASP.NET Core Startup.cs için (.NET 5 veya daha eski sürümlerinde), program.cs dosyasında (.NET 6 veya üzeri sürümler için) veya 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ğıda gösterildiği gibidir:

Bu örnekte, Logger sınıfının bir örneğini oluşturuyoruz ve Debug Seviyesinde mesajları günlüğe kaydetmek için kullanıyoruz. NLog tarafından desteklenen izleme seviyesini keşfedelim.
Günlük Seviyeleri
NLog, her birinin kendine özgü önemi olan birkaç günlük seviyesini destekler:
- İzleme: Tipik olarak tanılama amaçlı kullanılan en ayrıntılı seviyedir.
- Hata Ayıklama: Geliştirme sırasında faydalı olabilecek hata ayıklama bilgileri için kullanılır.
- Bilgi: Uygulamanın çalışması hakkında genel bilgi.
- Uyarı: Uygulamanın çalışmasını bozmayan olası bir sorunu belirtir.
- Hata: Araştırılması gereken bir arıza olduğunu belirtir, ancak uygulamanın çökmesine neden olmaz.
- Ölümcül: Hemen ele alınması gereken bir kritik arızayı belirtir.
Bu seviyelere göre günlük mesajlarını kategorize ederek, bunları ciddiyetine göre kolayca filtreleyip önceliklendirebilirsiniz.
nLog.Config dosyanızdaki kurallar etiketi içine minlevel="Trace" aşağıda gösterildiği gibi yerleştirin.
<rules>
<logger name="*" minlevel="Trace" writeTo="console" />
</rules>
<rules>
<logger name="*" minlevel="Trace" writeTo="console" />
</rules>
Tüm izleme seviyelerindeki mesajları günlüğe kaydetmek için 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ğıda gösterildiği gibi Konsol'da mesajları günlüğe kaydetmiştir.

Artık Konsol'da mesajları günlüğe kaydetme örneğini gösterdik. Artık bir dosyaya mesajları günlüğe kaydetmek için bir NLog hedefini yapılandıracağız.
Dosyada Log Mesajı
Dosya günlüğü 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, bir dosyaya mesajları günlüğe kaydetmek için programı çalıştırın.

Günlük Hedefleri
NLog, günlük mesajlarınızın nerede depolanması gerektiğini seçmenizi sağlayan çeşitli günlük çıktı hedeflerini destekler. Bazı yaygın hedefler şunları içerir:
- Dosya: Mesajları bir veya daha fazla dosyaya kaydeder.
- Konsol: Mesajları konsola kaydeder.
- Veritabanı: Mesajları bir veritabanı (SQL Server, MySQL, Oracle, PostgreSQL, vb.) tablosuna kaydeder.
- E-posta: Mesajları e-postalar olarak gönderir.
- Olay Günlüğü: Mesajları Windows Olay Günlüğü'ne kaydeder.
- Özel Hedefler: Özellikle ihtiyaçlarınıza uygun özel günlük hedefleri oluşturabilirsiniz.
NLog'u aynı anda bir veya daha fazla hedef kullanacak şekilde yapılandırabilirsiniz.
IronPDF'i Tanıtma
IronPDF Hakkında Daha Fazla Keşfedin C# ve VB.NET uygulamalarındaki PDF işlemlerini basitleştiren güçlü bir .NET kütüphanesidir. PDF belgeleri oluşturma, düzenleme ve manipüle etme yeteneklerini, HTML içeriğini PDF formatına dönüştürme işlevselliğini sunarak, web geliştirme, raporlama ve belge yönetimi gibi birçok sektördeki geliştiriciler için vazgeçilmez bir araç haline getirir.
IronPDF'nin öne çıkan özelliği, düzenlerinizi ve stillerinizi koruyan HTML'den PDF'ye Dönüştürme işlevselliğidir. Web içeriğinden PDF'ler oluşturur, bu da raporlar, faturalar ve belgeler için idealdir. HTML dosyaları, URL'ler ve HTML dizeleri 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
Günlükle bir PDF oluşturalım.
Günlüklü PDF Oluşturma
İlk adım, projemize IronPDF kütüphanesini yüklemektir. Bunu Visual Studio'daki NuGet Paket Yöneticisi'ni veya NuGet CLI'yi kullanarak yapabiliriz. Projenizi açın ve Paket Yöneticisi Konsolu'nda aşağıdaki komutu yazın.
Install-Package IronPdf
Bu komut, IronPDF'i tüm gerekli bağımlılıklarla birlikte projemize yükleyecektir.
HTML'den günlükle bir 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 snippet'ı, aşağıda gösterildiği gibi bir dosyaya kaydedilmiş bir mesajla bir PDF dosyası oluşturacaktır.
Günlük ve PDF Dosyası

Sonuç
Sonuç olarak, NLog, C# uygulamalarında etkili bir günlük kaydı için vazgeçilmez bir araç olarak ortaya çıkmıştır ve geliştiricilere log verilerini yakalamak, kategorize etmek ve yönetmek için sağlam bir yapı sunmaktadır. Esnekliği ve kullanım kolaylığı, çeşitli alanlarda ihtiyaçlar için en çok tercih edilen günlük kaydı seçimidir. Ayrıca, .NET uygulamalarında PDF oluşturma ve manipülasyonu basitleştiren IronPDF gibi tamamlayıcı kütüphanelerle birleştirildiğinde, geliştiriciler PDF tabanlı loglar ve raporlar oluşturma kabiliyetlerini genişletebilir. IronPDF, özelliklerini test etmek için IronPDF'ün ücretsiz deneme sürümünü sunuyor. Eğer gereksinimlerinizi karşılıyorsa, IronPDF için ticari bir lisans seçebilirsiniz, bu da projelerinize sorunsuz bir şekilde entegrasyon ve PDF ile ilgili işlevsellikler için ek faydalar ve destek sağlar.
NLog ve IronPDF'in gücünü bir arada kullanarak, geliştiriciler sadece uygulamalarının davranışlarını anlamakla kalmaz, aynı zamanda raporlama ve belge yönetimi süreçlerini geliştirir. Bu da yazılımlarının etkili, sürdürülebilir ve iyi belgelenmiş bir yapıya kavuşmasını sağlar.
Sıkça Sorulan Sorular
NLog, C# uygulamalarında günlük tutmayı nasıl geliştirir?
NLog, C# uygulamaları için güçlü ve esnek bir günlük tutma cercevesi sağlar. Geliştiriciler, günlük hedeflerini ve kurallarını bir yapılandırma dosyasında tanımlayarak kolayca günlük tutmayı uygulayabilir, Trace, Debug, Info, Warn, Error ve Fatal gibi farklı günlük sevilerini destekler.
Bir .NET uygulamasında NLog'u kurma işlemi nedir?
Bir .NET uygulamasında NLog'u kurmak için, NLog NuGet paketini yüklemeniz ve nlog.config dosyasında günlük hedeflerini ve kurallarını yapılandırmanız gerekir. Bu kurulum, günlüklerin dosyalar, konsollar, veritabanları veya e-postalar gibi nereye yonlendirilecegi belirlemenize olanak tanır.
NLog kullanarak mesajları veritabanına nasıl kaydedebilirim?
NLog kullanarak mesajları bir veritabanına kaydetmek için nlog.config dosyasında bir veritabanı hedefi kurmanız gerekir. Bağlantı dizisini ve günlük girişleri için gerekli tablo veya saklı prosedür ayrıntılarını belirteceksiniz.
NLog, günlük mesajları e-posta yoluyla gönderebilir mi?
Evet, NLog, nlog.config dosyasında bir e-posta hedefi yapılandırarak günlük mesajlarını e-posta yoluyla gönderebilir. SMTP sunucu ayrıntılarını, alıcı posta adreslerini ve diğer e-posta ayarlarını sağlamanız gerekir.
IronPDF'yi .NET'te PDF oluşturma için kullanmanın avantajları nelerdir?
IronPDF, PDF oluşturmayı, düzenlemeyi ve dönüştürmeyi basitlestiren güçlü bir .NET kütüphanesidir. HTML'den PDF'ye dönüstürmeyi destekler, böylece geliştiriciler HTML dizgilerinden, dosyalarından veya URL'lerden PDF'ler oluşturabilir, raporlama ve doküman yönetimi süreçlerini geliştirir.
Bir C# uygulamasında PDF oluşturma ile günlük tutmayı nasıl entegre edebilirim?
Bir C# uygulamasında NLog'u IronPDF ile entegre ederek uygulama olaylarını günlükleyebilir ve PDF'ler oluşturabilirsiniz. Bu kombinasyon, günlük bilgilerini içeren detaylı PDF raporları oluşturmanıza olanak tanır.
NLog yapılandırma sorunları için 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ında sözdizimi hatalarını kontrol etme, günlük hedefleri için doğru dosya yolları ve izinlerini sağlama ve uygulamada kaydı etkileyebilecek istisnaları gözden geçirme yer alır.
IronPDF'nin özelliklerini satın almadan önce nasıl test edebilirim?
IronPDF, geliştiricilerin özelliklerini test etmelerine olanak tanıyan bir bedava deneme sunar. Bu deneme suresi, ticari bir lisansa geçmeden önce IronPDF'nin PDF oluşturma, düzenleme ve dönüştürme becerilerini değerlendirmek için bir fırsat sunar.




