И log4net, и Logging Application Block являются допустимыми вариантами.Я думаю, что ELMAH в основном фокусируется на ведении журнала error , так что это, вероятно, не единственное, что вам нужно.
На работе я использую log4net в нескольких проектах.Он стабильный, производительный и расширяемый, и у нас никогда не было проблем с ним.
Я бы, вероятно, занялся журналированием с log4net и с исключением ELMAH.Он может регистрировать необработанные исключения вручную, и любое исключение, которое вы ловите и обрабатываете в своем приложении, может быть зарегистрировано с помощью одного вызова ELMAH.Это может показаться двойной регистрацией (и это так :-)).Но очень ценно иметь журнал ELMAH, когда в вашем приложении произошла непредвиденная ошибка.
Я слышал хорошие отзывы о проекте NLog , но сам не использовал его.Кажется, он немного сложнее, чем log4net, но имеет дополнительное преимущество, заключающееся в возможности автоматического добавления контекстной информации для регистрации сообщений (немного похоже на ELMAH).