Початок роботи з логами — Консоль
Цей посібник покаже вам, як за лічені хвилини розпочати роботу з OpenTelemetry .NET Logs у консольному застосунку.
Попередні вимоги
- .NET SDK встановлений на вашому компʼютері
Створення консольного застосунку
Створіть новий консольний застосунок і запустіть його:
dotnet new console --output getting-started
cd getting-started
dotnet run
Ви повинні побачити наступний результат:
Hello World!
Додавання логів OpenTelemetry
Встановіть пакунок OpenTelemetry Console Exporter:
dotnet add package OpenTelemetry.Exporter.Console
Оновіть файл Program.cs наступним кодом:
using Microsoft.Extensions.Logging;
using OpenTelemetry;
using OpenTelemetry.Logs;
// Створіть фабрику логерів з OpenTelemetry
using var loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddOpenTelemetry(options =>
{
options.AddConsoleExporter();
});
});
// Отримайте екземпляр логера
var logger = loggerFactory.CreateLogger<Program>();
// Записати просте повідомлення
logger.LogInformation("Hello from OpenTelemetry .NET Logs!");
// Записати з структурованими даними
logger.FoodPriceChanged("artichoke", 9.99);
// Записати більш складний приклад
logger.FoodRecallNotice(
"Food & Beverages",
"Contoso",
"Salads",
"Contoso Fresh Vegetables, Inc.",
"due to a possible health risk from Listeria monocytogenes");
// Визначте методи розширення для структурованого журналювання
internal static partial class LoggerExtensions
{
[LoggerMessage(LogLevel.Information, "Food `{name}` price changed to `{price}`.")]
public static partial void FoodPriceChanged(this ILogger logger, string name, double price);
[LoggerMessage(LogLevel.Critical, "A `{productType}` recall notice was published for `{brandName} {productDescription}` produced by `{companyName}` ({recallReasonDescription}).")]
public static partial void FoodRecallNotice(
this ILogger logger,
string productType,
string brandName,
string productDescription,
string companyName,
string recallReasonDescription);
}
Запустіть застосунок знову (за допомогою dotnet run) і ви побачите вихідні дані журналу в консолі:
LogRecord.Timestamp: 2023-09-15T06:07:03.5502083Z
LogRecord.CategoryName: Program
LogRecord.Severity: Info
LogRecord.SeverityText: Information
LogRecord.Body: Food `{name}` price changed to `{price}`.
LogRecord.Attributes (Key:Value):
name: artichoke
price: 9.99
OriginalFormat (a.k.a Body): Food `{name}` price changed to `{price}`.
LogRecord.EventId: 344095174
LogRecord.EventName: FoodPriceChanged
...
LogRecord.Timestamp: 2023-09-15T06:07:03.5683511Z
LogRecord.CategoryName: Program
LogRecord.Severity: Fatal
LogRecord.SeverityText: Critical
LogRecord.Body: A `{productType}` recall notice was published for `{brandName} {productDescription}` produced by `{companyName}` ({recallReasonDescription}).
LogRecord.Attributes (Key:Value):
brandName: Contoso
productDescription: Salads
productType: Food & Beverages
recallReasonDescription: due to a possible health risk from Listeria monocytogenes
companyName: Contoso Fresh Vegetables, Inc.
OriginalFormat (a.k.a Body): A `{productType}` recall notice was published for `{brandName} {productDescription}` produced by `{companyName}` ({recallReasonDescription}).
LogRecord.EventId: 1338249384
LogRecord.EventName: FoodRecallNotice
Вітаємо! Тепер ви збираєте логи за допомогою OpenTelemetry.
Як це працює
Застосунок створює конвеєр журналювання, створюючи екземпляр
LoggerFactory, з OpenTelemetry, доданим як постачальник журналювання.
OpenTelemetry SDK налаштовано з ConsoleExporter, щоб експортувати логи в консоль для демонстраційних цілей. Для промислового використання слід використовувати інші експортери, такі як OTLP Exporter.
Екземпляр LoggerFactory використовується для створення екземпляра ILogger, який використовується для фактичного журналювання.
Дотримуючись найкращих практик журналювання .NET, було використано генерацію виходу журналу під час компіляції, яка забезпечує високу продуктивність, структуроване журналювання та перевірені параметри типу.
Використання з інʼєкцією залежностей
Для застосунків, які використовують ILogger з інʼєкцією залежностей (DI) (наприклад, ASP.NET Core та .NET Worker), загальною практикою є додавання OpenTelemetry як постачальника журналювання до конвеєра журналювання DI, а не налаштування абсолютно нового конвеєра журналювання шляхом створення нового екземпляра LoggerFactory.
Дивіться посібник Вступ до ASP.NET Core, щоб дізнатися більше.
Дізнайтеся більше
Відгук
Чи це було корисним?
Дякуємо. Ми цінуємо ваші відгуки!
Будь ласка, дайте нам знати як ми можемо покращити цю сторінку. Ми цінуємо ваші відгуки!