Централизованное логарифмическое решение - PullRequest
1 голос
/ 20 декабря 2011

Я ищу хорошее решение для централизованного ведения журнала (для Windows сервер) для моего приложения ASP.NET MVC.

Мое приложение масштабируемо, и я хочу, чтобы мой журнал тоже масштабировался (чтобы сервер журналов не был единственной точкой отказа / узкого места).

Я раньше использовал LogFaces, но это решение не масштабируемо. Он использует один сервер журнала.

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

Есть предложения?

Спасибо! Roei

Ответы [ 3 ]

1 голос
/ 21 декабря 2011

Спред будет соответствовать всем требованиям.Это не служба ведения журнала, но ряд проектов используют ее для распределенной регистрации (например, модуль mod_log_spread веб-сервера Apache).У него есть клиент для C # , доступный здесь .

Его значение заключается в простом принципе: приложения, которые создают журналы, не должны быть ограничены или прерваны самим процессом регистрации.Ведение журнала, как правило, является второстепенной задачей приложения, и заполнение целевого диска файла журнала (или сбой службы журнала) является серьезной причиной сбоя приложения.

Чтобы достичь этого уровня разделения,Вы должны построить свое приложение таким образом, чтобы оно могло полностью асинхронно регистрироваться и независимо от «службы» журналирования.Spread достигает этого, используя хорошо понятную и устоявшуюся технологию: UDP / multicast.

Ведение журнала с помощью Spread будет означать, что ваши приложения будут входить в режим «запускай и забывай» по UDP.Если не настроен демон Spread для использования этих многоадресных сообщений, сообщения журнала исчезнут навсегда.Однако разделение между производителем и потребителем журналов означает, что вашим приложениям никогда не придется беспокоиться о заполнении дисков журналами, а также им не нужно беспокоиться о том, чтобы тратить время на поиск и подключение к центральному серверу журналов с использованием TCP.

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

1 голос
/ 20 декабря 2011

Посмотрите на ELMAH , отлично работает, может работать на одно приложение или один экземпляр, чтобы охватить все приложения на сервере

0 голосов
/ 21 декабря 2011

У меня есть appender, который отправляет сообщения в очередь сообщений msmq на удаленной машине через привязку wcf net.tcp. на другом конце есть служба, которая записывает эти сообщения в базу данных.

elmah, вероятно, очень хорош, если вы говорите только об asp.net - я понимаю, что он только подключается к нему и не затрагивает более общие вещи, такие как службы Windows и тому подобное. не уверен насчет приложений wcf или даже если вы заботитесь о чем-то помимо приложения asp.net. Я думаю, в вашей системе есть еще что-то, что вы хотели бы стандартизировать. Кроме того, поскольку вас беспокоит масштаб, вы можете быть обеспокоены необходимостью доступа к базе данных напрямую с asp.net для ведения журнала. я понимаю, что это то, что делает Элма. не смотрел на это, но это, вероятно, может быть расширен, чтобы сделать то, что я предлагаю с MSMQ. если вы действительно заботитесь о масштабе, я думаю, вы хотите так или иначе включить организацию очереди сообщений, и wcf - хороший вариант для этого.

...