Как создать многоразовую библиотеку семантической регистрации?
В настоящее время я занимаюсь разработкой библиотеки журналов.net, которая потенциально может использоваться в различных решениях нашей организации в виде пакета nuget. Однако я также хочу убедиться, что мы ведем семантическую регистрацию, чтобы журналы все еще были структурированы.
Пример - CustomEventSource.Log.OrderProcessingFailed(order.OrderNumber, order.ItemCount);
Учитывая, что я создаю общую службу, которая не зависит от приложения, она не должна быть тесно связана с приложением. Вот пример потока.
- Разработчик создает приложение и загружает пакет регистрации
- Разработчик создает EventsIds (например, OrderProcessingFailed), категории, ключевые слова и т. Д., Специфичные для их приложения.
- Разработчик создает экземпляр компонента регистрации, передавая такие детали, как имя компьютера, имя источника события.
- Разработчик создает журналы, используя подробности передачи экземпляра журнала, созданные на шаге 2, и массив соответствующих параметров значения имени (например, OrderNumber: 1234, ItemCount: 3).
- Библиотека журналов записывает события в ETW.
- Внешние слушатели фиксируют события.
Кто-нибудь видел решение, напоминающее выше? Мой вопрос больше о том, как реализовать шаг 2 выше. Я не хочу, чтобы EventId был свободным текстом, но это должно быть то, что клиент "вынужден" реализовать, подобно тому, как интерфейс дает вам представление о том, как реализовать то, что требуется.
Я знаю, что мой вопрос немного расплывчатый, поэтому уточнения приветствуются.