.NET 6 WebAPI — лучшая практика размещения шаблонов сообщений для ведения журнала

#logging #serilog #webapi #.net-6.0

#ведение журнала #serilog #webapi #.net-6.0

Вопрос:

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

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

     [Route("api/[controller]")]
    [ApiController]
    public class TmpController : ControllerBase
    {
        #region Private Fields

        private const string InvalidModelMessageTemplate = "Model is null or invalid: {Model}";
        private const string NotFoundMessageTemplate = "Could not find {Entity} with id: {Id}";
        private const string UnhandledExceptionMessageTemplate = "Unexpected exception in {Controller}: {Message}";

 
 catch (Exception ex)
{
      _logger.LogError(UnhandledExceptionMessageTemplate, nameof(TmpController), ex.Message);
      return new StatusCodeResult(StatusCodes.Status500InternalServerError);
}

 

Самым простым способом был бы статический класс, но у меня такое чувство, что это халтурно, и есть лучшие способы сделать это. Может быть, какая-то встроенная функциональность Serilog? Базовый класс для моих контроллеров?

Есть много способов сделать это, но ни один из них, который я придумал до сих пор, не кажется мне очень чистым. Какие-либо общие подходы?

Комментарии:

1. На самом деле это не практическая проблема, подходящая для переполнения стека. Вы просто хотите написать лучший код. Это может быть лучше подходит для разработки программного обеспечения или анализа кода , но вам следует прочитать их справочные документы и руководства, чтобы понять, соответствует ли это теме или нет. И если их сайты чем-то похожи на наши, они предпочитают код в виде текста, а не изображения кода.

2. Вы могли бы рассмотреть возможность использования файлов ресурсов