Zarówno log4net, jak i blok aplikacji rejestrowania są prawidłowymi wyborami. Myślę, że ELMAH koncentruje się głównie na błędach logowanie, więc prawdopodobnie nie jest to (jedyna rzecz), której chcesz.
W pracy używam log4net w kilku projektach. Jest stabilny, wydajny i rozszerzalny, a my nigdy nie mieliśmy z nim żadnych problemów.
Prawdopodobnie zrobiłbym logowanie za pomocą log4net i logowanie wyjątków również za pomocą ELMAH. Może rejestrować nieobsłużone wyjątki ręcznie, a każdy wyjątek przechwycony i obsłużony w aplikacji może być rejestrowany za pomocą jednego wywołania ELMAH. Może to wyglądać na podwójne logowanie (i tak jest :-)). Ale bardzo cenne jest posiadanie dziennika ELMAH, gdy coś nieoczekiwanego zawiodło w Twojej aplikacji.
Słyszałem dobre rzeczy o Projekcie NLlog , ale sam go nie używałem. Wydaje się, że jest nieco bardziej złożony niż log4net, ale ma dodatkową zaletę, że jest w stanie automatycznie dodawać informacje kontekstowe do komunikatów dziennika (trochę jak ELMAH).