C#:
Логування
Як це робити:
У C#, ви можете використовувати вбудований простір імен System.Diagnostics
або сторонні бібліотеки, такі як NLog або log4net. Ось швидкий приклад використання інтерфейсу ILogger
, доступного у .NET Core:
using Microsoft.Extensions.Logging;
using System;
public class Program
{
public static void Main()
{
using var loggerFactory = LoggerFactory.Create(builder => {
builder.AddConsole();
});
ILogger logger = loggerFactory.CreateLogger<Program>();
logger.LogInformation("Це інформаційне повідомлення.");
logger.LogWarning("Це попереджувальне повідомлення.");
logger.LogError("Це повідомлення про помилку.");
}
}
Приклад виводу:
info: Program[0]
Це інформаційне повідомлення.
warn: Program[0]
Це попереджувальне повідомлення.
fail: Program[0]
Це повідомлення про помилку.
Поглиблено
Історія логування у розробці програмного забезпечення майже така стара, як і саме програмування; вона еволюціонувала від простих вказівок друку до складних, налаштованих систем. Історично логування виконувалося шляхом запису до файлів чи консолі, але це розширилося до більш складних структур, таких як системи агрегації логів і платформи розподіленого трасування (як ELK стек чи Jaeger).
Альтернативи вбудованому логуванню в .NET включають сторонні бібліотеки:
- NLog: універсальна і легка в налаштуванні, з багатьма можливостями для маршрутизації, форматування і фільтрації логів.
- log4net: натхненний бібліотекою Java log4j, він високо налаштовується з XML і підтримує різноманітні репозиторії логів.
Коли мова йде про деталі реалізації, вибір вашої абстракції логування (як Microsoft.Extensions.Logging) та базового провайдера логування може значно вплинути на продуктивність та надійність додатка. Дуже важливо правильно налаштувати рівні логування і переконатися, що запис логів не стане вузьким місцем.
Також, структуроване логування - коли ви логуєте не просто рядки, а пари ключ-значення або об’єкти - дозволяє отримати більш точні і дієві логи, які легше запитувати та аналізувати.
Дивіться також
- Документація Microsoft.Extensions.Logging
- Документація NLog
- Документація log4net
- Документація Serilog (приклад структурованого логування)