NLog چیست؟
یکی دیگر از کتابخانههای محبوب Logging داتنت، با تمرکز بر پیکربندی انعطافپذیر (فایل XML/JSON) و پایداری طولانی در اکوسیستم داتنت.
چرا مهم است؟
NLog سالهاست در پروژههای داتنت (از جمله پیش از داتنت Core) استفاده میشود؛ در تیمهایی که از قبل روی NLog سرمایهگذاری کردهاند، جایگزینی کامل با Serilog همیشه ارزشش را ندارد.
تعریف
NLog هم مثل Serilog Logging ساختیافته را پشتیبانی میکند، اما پیکربندی آن سنتاً بیشتر از طریق فایل NLog.config (XML) انجام میشود، در کنار پیکربندی کد C#.
مثال
<!-- NLog.config -->
<nlog>
<targets>
<target name="file" xsi:type="File" fileName="logs/app-${shortdate}.log" />
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="file" />
</rules>
</nlog>
_logger.LogInformation("سفارش {OrderId} پردازش شد", order.Id);
NLog در برابر Serilog
- NLog: پیکربندی مبتنی بر فایل قابل تغییر بدون Rebuild، سابقه طولانی و پایدار.
- Serilog: پیکربندی Fluent در کد C#، اکوسیستم Sink امروزی گستردهتر و محبوبیت بیشتر در پروژههای جدید.
- از نظر عملکردی هر دو برای اکثر پروژهها کافیاند؛ انتخاب بین آنها بیشتر سلیقه تیم و سابقه پروژه است.
اشتباه رایج
❌ نگهداشتن سطح لاگ Debug/Trace روشن در Production بدون فیلتر مناسب — حجم لاگ بهسرعت زیاد میشود و هزینه ذخیرهسازی/جستوجو بالا میرود؛ برای Production معمولاً Information یا Warning به بالا کافی است.
منبع و مطالعه بیشتر
خلاصه
NLog کتابخانه Logging ساختیافته دیگری است با تمرکز بر پیکربندی فایلمحور (NLog.config)؛ از نظر قابلیت مشابه Serilog است. سطح لاگ Production را روی Information/Warning نگه دارید، نه Debug/Trace. مرجع کامل: مستندات رسمی NLog.
