Escorp.Atom.Debug
0.2.7
See the version list below for details.
dotnet add package Escorp.Atom.Debug --version 0.2.7
NuGet\Install-Package Escorp.Atom.Debug -Version 0.2.7
<PackageReference Include="Escorp.Atom.Debug" Version="0.2.7" />
<PackageVersion Include="Escorp.Atom.Debug" Version="0.2.7" />
<PackageReference Include="Escorp.Atom.Debug" />
paket add Escorp.Atom.Debug --version 0.2.7
#r "nuget: Escorp.Atom.Debug, 0.2.7"
#:package Escorp.Atom.Debug@0.2.7
#addin nuget:?package=Escorp.Atom.Debug&version=0.2.7
#tool nuget:?package=Escorp.Atom.Debug&version=0.2.7
Atom.Debug
Высокопроизводительный модуль логирования для .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 | Versions 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. |
-
net10.0
- Escorp.Atom (>= 0.9.4)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.0)
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 | 418 | 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 | 192 | 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 |