Во-первых, это решение, но не обязательно best , поскольку оно действительно зависит от ваших потребностей. У нас есть текстовый файл с фиксированным размером, который используется в качестве циклического журнала. У нас есть преимущество сообщений фиксированной длины, так что это работает для нас. Один раз в день, в более тихое время, сервер извлекает записи журнала, которые ему еще предстоит прочитать. Он может обрабатывать пару сотен записей в секунду, не потея. Существует риск того, что более старые записи будут перезаписаны более новыми, если сервер не извлечет достаточно времени, но размер файла таков, что это вряд ли произойдет, так как у нас также есть преимущество, заранее зная примерно, что максимальное количество записей в день будет.
Но, как я уже сказал, от ваших потребностей в значительной степени зависит то, какое решение лучше. Я не использовал журналы событий C #, но если они чем-то похожи на старые журналы событий Windows NT, то его преимущество заключается в возможности внешнего чтения без участия клиентской программы.