Я провел много исследований, но не смог получить абсолютный ответ.
У меня есть стек ELK и три отдельных приложения (2 приложения Asp.Net WebForms и одно приложение службы Windows, написанные на C #& C ++).Все они используют унифицированную сборку .Net «Инфраструктуры», которая содержит статический класс «Трассировка».Класс Trace содержит разные записи (HttpLogWriter, FileLogWriter, WindowsEventLogWriter ...).У этого также есть методы, названные "Информация", "Отладка", "Ошибка" и другие, которые все вызывают метод "Журнала", реализованный в каждом писателе.
Мы пишем много журналов,и я не уверен, как лучше всего написать их, используя HttpLogWriter.
В настоящее время HttpLogWriter использует класс "HttpClient" для отправки журнала в Logstash.
Когда я установил Logstash вслабая машина (на AWS), у меня были некоторые проблемы с производительностью.Может быть, это будет решено, если я буду использовать более сильный компьютер для Logstash, но я не хочу, чтобы мой код полагался на него.
Каков наилучший способ сделать это?
У меня были идеи:
- Использовать 1 поток для класса Trace (Как?).
- Использовать класс BlockingQueue.
- Использовать шаблон Fire and Forget (Как?).
Заранее спасибо.