Log4net i Logging Application Block jsou platné volby. Myslím, že ELMAH se většinou zaměřuje na chybu logování, takže to pravděpodobně není (jediná věc), kterou chcete.
V práci používám log4net na několika projektech. Je stabilní, výkonný a rozšiřitelný a nikdy jsme s ním neměli žádné problémy.
Pravděpodobně bych provedl protokolování pomocí log4net a protokolování výjimek také pomocí ELMAH. Může zaznamenat neošetřené výjimky ručně a každou výjimku, kterou zachytíte a zpracujete ve své aplikaci, lze zaprotokolovat jediným voláním ELMAH. Může se to zdát jako dvojité protokolování (a také je :-)). Je však velmi cenné mít protokol ELMAH, když ve vaší aplikaci selhalo něco neočekávaného.
Slyšel jsem dobré věci o projektu NLog , ale sám jsem to nepoužil. Zdá se, že je o něco složitější než log4net, ale má další výhodu v tom, že je možné automaticky přidávat kontextové informace do protokolování zpráv (trochu jako ELMAH).