Table of Contents

Логгирование

Warning

Прежде чем начать использовать логгирование, убедитесь, что вы установили адаптер для своего логгера и правильно настроили его. Подробнее о настройке читайте здесь.

Обзор

Логгирование результатов позволяет отслеживать состояние выполнения операций, библиотека предоставляет как стандартный набор методов логгирования, таких как LogTrace, LogDebug и т.д., так и специфичные методы для результатов: LogIfSucces, LogIfFailure

Как это работает

  • Базовые функции для логгирования по типу LogDebug производят логгирование при любом статусе результата
  • Функция LogIfSuccess производит логгирование только в том случае, если результат операции успешен
  • Функция LogIfFailure производит логгирование только в том случае, если результат операции не успешен
  • Все функции логгирования возвращают исходный результат, что бы продолжить цепочку обработки

Базовые методы логгирования

Note

Все базовые методы логгирования принимают следующие параметры

  • message - выводимое сообщение, может содержать шаблон для подстановки значений, например: value: {val}
  • context - контекст, в котором производится логгирование
  • args - массив аргументов, применяемых для форматтирования шаблона

LogTrace

Логгирует результат с уровнем Trace. Этот уровень используется для наиболее детализированных сообщений.

// Выведет: 
// trce: MyLogger[0]
//       Operation executed. 11, False
result.LogTrace("Operation executed. {arg1}, {arg2}", "message context", 11, false); 

LogDebug

Логгирует результат с уровнем Debug. Используется для отладки в процессе разработки.

result.LogDebug("Debug information for operation.");

LogInformation

Логгирует результат с уровнем Information. Применяется для отслеживания общего потока выполнения приложения.

result.LogInformation("Operation completed successfully.");

LogWarning

Логгирует результат с уровнем Warning. Подходит для отображения неожиданных ситуаций, которые не останавливают выполнение.

result.LogWarning("Operation completed with warnings.");

LogError

Логгирует результат с уровнем Error. Используется для отображения ошибок, которые приводят к остановке текущего выполнения.

result.LogError("Operation failed due to error.");

LogCritical

Логгирует результат с уровнем Critical. Применяется для критических сбоев, требующих немедленного вмешательства.

result.LogCritical("Critical failure encountered.");

Условное логгирование

LogIfSuccess

Логгирует сообщение только в случае успешного выполнения операции (IsSuccess).

result.LogIfSuccess("Operation completed successfully.");

LogIfFailure

Логгирует сообщение только в случае ошибки (IsFailure). Также доступен вариант, который автоматически собирает и логгирует все сообщения об ошибках.

result.LogIfFailure("Operation failed.");
// Вывод:
// fail: MyLogger[0]
//       some failure message
//       not found message

result = Result.Failure(
    Error.Failure("some failure message"), 
    Error.NotFound("not found message")
);

result.LogIfFailure();

Использование с Result<T>

Tip

Все перечисленные методы работают как с Result, так и с Result<T>, но для Result<T> есть несколько особенностей

// Вывод:
// info: MyLogger[0]
//       value 10
// info: MyLogger[0]
//       value 100
// info: MyLogger[0]
//       some message witout any args

// В качестве args принимет Result<int>.Value
Result<int>.Success(10).LogIfSuccess("value {0}"); 

// В качестве args передаются параметры, Result<int>.Value игнорируется
Result<int>.Success(10).LogIfSuccess("value {0}", "context", ResultSharp.Logging.LogLevel.Information, 100);

// Строка без аргументов
Result<int>.Success(10).LogIfSuccess("some message witout any args");

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

enum LogLevel
{
    Trace,
    Debug,
    Information,
    Warning,
    Error,
    Critical
}