Domyślam się, że główną wadą ELMAH jest to, że może to być przesada w stosunku do potrzeb. Jeśli jest to rejestrowanie i przechowywanie większej ilości informacji niż we własnej implementacji, jest to niepotrzebne obciążenie związane z przechowywaniem i przetwarzaniem. Musisz także zastanowić się, w jaki sposób zabezpieczyć dostęp do konsoli ELMAH, ponieważ szczegóły tego wyjątku mogą zawierać soczyste szczegóły Twojej aplikacji (to nie musi być trudne, ale martwisz się, że wcześniej tego nie robiłeś).
Z drugiej strony, twoja własna implementacja prawdopodobnie wzrośnie, aby zarejestrować wszystkie te dodatkowe informacje, kiedy zdecydujesz, że wymaga tego uporczywy błąd, i czy naprawdę zależy ci na ułamkach ułamków sekundy od czasu, który zajmuje dla strona błędu zostanie wyświetlona? Możliwe, że ostatecznie utworzysz własną wersję ELMAH, więc dlaczego nie po prostu użyć ELMAH i oszczędzić sobie czasu.
Polecam, jeśli chcesz napisać własne rejestrowanie błędów zamiast używać ELMAH, to przynajmniej umieść go w module, a nie bezpośrednio w Application_Error w global.asax. Wystarczy zasubskrybować zdarzenie Error zdarzenia w module Init i można łatwo ponownie wykorzystać kod obsługi błędów w innej aplikacji za pomocą linii w pliku web.config.
Również przydatna jest obsługa wszelkich rejestrów wyjątków za pośrednictwem monitorowania stanu ASP.NET. Dzięki temu można łatwo kontrolować typ i poziom logowania w pliku web.config, a także pozwala na rejestrowanie wyjątków, które zostały obsłużone przy próbie ... catch, bez przechodzenia aż do Application_Error. Stwórz niestandardową klasę HandledExceptionEvent, która rozszerza WebRequestErrorEvent, i możesz tworzyć i przenosić te zdarzenia w dowolnym bloku catch, w którym naprawdę chciałbyś wiedzieć, że wyjątek się zdarzył, mimo że został obsłużony.
Nigdy nie słyszałem o ELMAH przed ... to całkiem fajne. Będę o tym pamiętać. –
+1 za wprowadzenie mnie do tej biblioteki –