Sowohl log4net als auch Logging Application Block sind gültige Optionen. Ich denke, ELMAH konzentriert sich hauptsächlich auf Fehler Protokollierung, also ist das wahrscheinlich nicht (das Einzige), was Sie wollen.
Bei der Arbeit verwende ich log4net für ein paar Projekte. Es ist stabil, performant und erweiterbar und wir hatten noch nie Probleme damit.
Ich würde wahrscheinlich mit log4net protokollieren und auch Ausnahmen mit ELMAH protokollieren. Es kann nicht behandelte Ausnahmen manuell protokollieren, und jede Ausnahme, die Sie in Ihrer Anwendung abfangen und behandeln, kann mit einem einzigen Aufruf von ELMAH protokolliert werden. Dies mag wie doppelte Protokollierung erscheinen (und das ist es auch :-)). Aber es ist sehr wertvoll, das ELMAH-Protokoll zu haben, wenn etwas Unerwartetes in Ihrer Anwendung fehlgeschlagen ist.
Ich habe viel Gutes über das NLog-Projekt gehört , habe es aber selbst noch nicht benutzt. Es scheint etwas komplexer zu sein als log4net, hat aber den zusätzlichen Vorteil, dass es Kontextinformationen automatisch zu Protokollnachrichten hinzufügen kann (ein bisschen wie ELMAH).