Escorp.Atom.Debug 0.2.9

dotnet add package Escorp.Atom.Debug --version 0.2.9
                    
NuGet\Install-Package Escorp.Atom.Debug -Version 0.2.9
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Escorp.Atom.Debug" Version="0.2.9" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Escorp.Atom.Debug" Version="0.2.9" />
                    
Directory.Packages.props
<PackageReference Include="Escorp.Atom.Debug" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Escorp.Atom.Debug --version 0.2.9
                    
#r "nuget: Escorp.Atom.Debug, 0.2.9"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Escorp.Atom.Debug@0.2.9
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Escorp.Atom.Debug&version=0.2.9
                    
Install as a Cake Addin
#tool nuget:?package=Escorp.Atom.Debug&version=0.2.9
                    
Install as a Cake Tool

Atom.Debug

NuGet

Высокопроизводительный модуль логирования для .NET, совместимый с Microsoft.Extensions.Logging. Предоставляет расширяемую инфраструктуру для записи событий в консоль, файлы и комбинированные журналы с поддержкой асинхронной обработки, областей видимости (scopes) и стилизации вывода.

Возможности

  • 🚀 Асинхронная обработка — неблокирующая запись логов через очередь
  • 🎨 Стилизация вывода — цветовое оформление консольных сообщений
  • 📁 Файловое логирование — автоматическое создание директорий и файлов
  • 🔗 Комбинированные журналы — одновременная запись в несколько целей
  • 🔄 Области видимости (Scopes) — контекстная информация с поддержкой вложенности
  • ⚙️ Fluent API — удобная настройка через цепочку методов
  • Совместимость с ILogger — полная поддержка Microsoft.Extensions.Logging

Установка

dotnet add package Escorp.Atom.Debug

Быстрый старт

Консольное логирование

using Atom.Debug.Logging;
using Microsoft.Extensions.Logging;

// Создание логгера через фабрику
var logger = Logger.Factory.CreateLogger("MyApp");

// Базовое логирование
logger.LogInformation("Приложение запущено");
logger.LogWarning("Предупреждение: {Message}", "низкий уровень памяти");
logger.LogError(exception, "Произошла ошибка");

Настройка через Fluent API

var logger = new ConsoleLogger("MyCategory")
    .WithTime()                                    // Вывод времени
    .WithDate()                                    // Вывод даты
    .WithCategoryName()                            // Вывод названия категории
    .WithStyling()                                 // Цветовое оформление
    .WithLogLevels(LogLevel.Warning, LogLevel.Error); // Только Warning и Error

Области видимости (Scopes)

using (logger.BeginScope("[Transaction]"))
{
    logger.LogInformation("Начало транзакции");

    using (logger.BeginScope("[Step 1]"))
    {
        logger.LogDebug("Выполнение шага 1");
    }

    logger.LogInformation("Транзакция завершена");
}
// Вывод: 03:30:11.123 [Transaction] Начало транзакции
// Вывод: 03:30:11.124 [Transaction] [Step 1] Выполнение шага 1
// Вывод: 03:30:11.125 [Transaction] Транзакция завершена

Файловое логирование

var fileLogger = new FileLogger("MyCategory", "logs/app.log")
    .WithDate()
    .WithTime();

fileLogger.LogInformation("Событие записано в файл");

Комбинированное логирование

// Добавление провайдера файлового логирования
Logger.Factory.AddProvider(new FileLoggerProvider("logs/"));

// Создание комбинированного логгера (консоль + файл)
var combinedLogger = Logger.Factory.CreateLogger("MyApp");
combinedLogger.LogInformation("Сообщение записано в консоль и файл");

Архитектура

Atom.Debug/
├── Logging/
│   ├── Logger.cs                    # Базовый класс логгера
│   ├── LoggerEventArgs.cs           # Аргументы события логирования
│   ├── LoggerFactory.cs             # Фабрика создания логгеров
│   ├── ScopeContext.cs              # Контекст области видимости
│   ├── ScopeContextEventArgs.cs     # Аргументы события контекста
│   ├── Loggers/
│   │   ├── ConsoleLogger.cs         # Консольный логгер
│   │   ├── FileLogger.cs            # Файловый логгер
│   │   └── CombinedLogger.cs        # Комбинированный логгер
│   └── Providers/
│       ├── LoggerProvider.cs        # Базовый провайдер
│       ├── ConsoleLoggerProvider.cs # Провайдер консольных логгеров
│       └── FileLoggerProvider.cs    # Провайдер файловых логгеров

Ключевые типы

Логгеры

Тип Описание
Logger Абстрактный базовый класс с асинхронной обработкой
Logger<T> Generic-версия с автоматическим именем категории
ConsoleLogger Вывод в консоль со стилизацией
ConsoleLogger<T> Generic-версия консольного логгера
FileLogger Запись в файл с автосозданием директорий
FileLogger<T> Generic-версия файлового логгера
CombinedLogger Запись в несколько целей одновременно
CombinedLogger<T> Generic-версия комбинированного логгера

Провайдеры

Тип Описание
LoggerProvider<T> Базовый абстрактный провайдер
ConsoleLoggerProvider Создаёт консольные логгеры
FileLoggerProvider Создаёт файловые логгеры

Вспомогательные классы

Тип Описание
LoggerFactory Фабрика для создания логгеров
LoggerEventArgs<T> Аргументы события записи в журнал
ScopeContext Контекст области видимости
ScopeContextEventArgs Аргументы события контекста

Настройка логгера

Методы конфигурации

Метод Описание
WithLogLevels(params LogLevel[]) Включает указанные уровни логирования
WithoutLogLevels(params LogLevel[]) Отключает указанные уровни логирования
WithCategoryName() / WithoutCategoryName() Вывод названия категории
WithDate() / WithoutDate() Вывод даты события
WithDate(string format) Вывод даты с указанным форматом
WithTime() / WithoutTime() Вывод времени события
WithTime(string format) Вывод времени с указанным форматом
WithEventId() / WithoutEventId() Вывод идентификатора события
WithStyling() / WithoutStyling() Цветовое оформление

Уровни логирования

Поддерживаются стандартные уровни Microsoft.Extensions.Logging.LogLevel:

Уровень Цвет (консоль) Описание
Trace Тёмно-серый Детальная отладочная информация
Debug Серый Отладочная информация
Information Белый Информационные сообщения
Warning Жёлтый Предупреждения
Error Тёмно-красный Ошибки
Critical Красный Критические ошибки

События

Logger.Logged

Событие Logged позволяет перехватывать записи в журнал:

logger.Logged += (sender, args) =>
{
    // Модификация или отмена записи
    if (args is LoggerEventArgs<string> logArgs)
    {
        if (logArgs.State?.Contains("secret") == true)
        {
            args.Cancel(); // Отмена записи
        }
    }
};

Интеграция с Microsoft.Extensions.Logging

// Использование с DI
services.AddSingleton<ILoggerFactory>(Logger.Factory);
services.AddSingleton(typeof(ILogger<>), typeof(ConsoleLogger<>));

Производительность

  • Неблокирующая асинхронная запись через очередь
  • Пулинг объектов ScopeContext через ObjectPool<T>
  • Пулинг аргументов событий через MutableEventArgs.Rent<T>()
  • Использование ValueStringBuilder для эффективной работы со строками

Лицензия

MIT License. Copyright © Escorp Dynamics

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Escorp.Atom.Debug:

Package Downloads
Escorp.Atom.Net

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.2.9 415 12/5/2025
0.2.7 149 11/30/2025
0.2.6 245 11/14/2025
0.2.5 303 11/13/2025
0.2.4 191 10/12/2025
0.2.3 199 9/5/2025
0.2.2 244 4/9/2025
0.2.1 225 4/9/2025
0.2.0 224 4/7/2025
0.1.9 217 4/6/2025
0.1.8 219 4/6/2025
0.1.7 142 4/5/2025
0.1.6 166 4/5/2025
0.1.5 161 4/5/2025
0.1.4 235 4/1/2025
0.1.3 217 4/1/2025
0.1.2 221 4/1/2025