Записывать REST-запросы в файл с уникальным идентификатором запроса.C#

Место общения программистов C#
Anonymous
Записывать REST-запросы в файл с уникальным идентификатором запроса.

Сообщение Anonymous »

Предположим, у меня есть простой REST-API, написанный на .net 6, который регистрируется в файле журнала на локальном диске. В ходе обработки запроса создается несколько записей журнала. Например, предположим, что у нас есть контроллер, который вызывает службу, которая вызывает репозиторий, хранящий переданные данные в базе данных:

Код: Выделить всё

public class FooController {
[HttpPost]
public Foo CreateFoo(FooDto fooDto) {
_logger.Debug("Some logging in the controller");
var foo = _mapper.Map(fooDto);
_fooService.CreateFoo(foo);
}
}

Код: Выделить всё

public class FooService {
public void CreateFoo(IFoo foo) {
_logger.Debug("Some logging in the service");
_fooRepository.Create(foo);
}
}

Код: Выделить всё

public class FooRepository {
public void CreateFoo(IFoo foo) {
_logger.Debug("Some logging in the repository");
}
}
Если параллельно обрабатывается несколько запросов, чтение файлов журналов будет затруднено. Какой-то уникальный идентификатор для каждого запроса поможет разделить запросы при чтении файла журнала.
Например, что-то вроде этого:

Код: Выделить всё

2023-08-07 08:40:06.3280 DEBUG REQUEST-ID FooController Some logging in the controller
2023-08-07 08:40:06.3281 DEBUG REQUEST-ID FooService    Some logging in the service
2023-08-07 08:40:06.3282 DEBUG REQUEST-ID FooRepository Some logging in the repository
Есть ли встроенный способ (или даже сторонний Nugets) для архивирования этого? Я нашел решения, которые регистрируют идентификатор потока, но я бы предпочел какой-то GUID или случайную строку, поскольку идентификатор потока можно было бы повторно использовать после остановки потока.

Подробнее здесь: https://stackoverflow.com/questions/768 ... request-id

Вернуться в «C#»