MVC, ASP ve en sevdiğiniz günlüğe kaydetme / istisna işleme çerçevesinin hedeflerinizi oldukça iyi karşılayabileceğini düşünüyorum. Hem ELMAH hem de Enterprise Library, istisnasız kullanım ve günlüğe kaydetme işlemlerinin kolay kullanılmasını sağlar, bu yüzden en sevdiğiniz öğeyi seçin.
NOT: dostça bir hata sayfası görüntüleyemezsiniz ve sorunuzun önerdiği gibi bir HTTP 404 veya 500 döndüremezsiniz. Dostça bir hata sayfası döndürdüğünüzde, tarayıcınıza döndürülen HTTP kodu 302 olacaktır. Bu, dostça hata sayfasına bir yönlendirmedir.
Dost Hata Sayfaları
Bir süredir ASP.net’in bir parçası olan iyi moda web.config ayarlarıyla hedeflerinize ulaşabileceksiniz. Geliştirme sırasında hata ayıklama bilgilerini göstermeyi ve üretimde dostça sayfaları göstermekten bahsediyorsunuz. Bunun için web.config'ün özel hatalar bölümünü kullanabilirsiniz (Hata ayıklama bilgilerini göstermek için CustomErrors = "Off" ayarla). Bunu okumamışsanız, CustomErrors niteliğini bildiğinizi varsayalım:
http://msdn.microsoft.com/en-us/library/h0hfz6fc.aspx
Hangi hata görünümlerini görüntüleyeceğiniz konusunda daha fazla kontrol düzeyine ihtiyacınız varsa, MVC'nin HandleError Özniteliğini kullanın. Bu şekilde, her bir Eylem / Denetleyici için farklı hata görünümleri seçebilirsiniz.
http://weblogs.asp.net/scottgu/archive/2008/07/14/asp-net-mvc-preview-4-release-part-1.aspx
İstisna Günlüğü
Tüm istisnalarınıza aynı şekilde yanıt vermek istediğiniz gibi gözüküyor ('Hataları günlüğe kaydet ve üretimdeki yöneticiye e-postayla gönder'). Bu durumda, en basit seçeneğiniz kod eklemek
Application_Error (nesne gönderen, EventArgs e)
global.asax’ınızda Seçtiğiniz kayıt çerçevesine geçebileceğiniz yer burasıdır.
İstisna günlüğü / kullanımınız üzerinde daha fazla kontrol sahibi olmak istiyorsanız, HandleErrorAttribute öğesini alt sınıflandırabilir ve geçersiz kılabilirsiniz.
OnException(System.Web.Mvc.ExceptionContext filterContext)
bu, seçtiğiniz kayıt çerçevesine geçebileceğiniz başka bir yer.
https://stackoverflow.com/questions/183316/asp-net-mvc-handleerror
Bu size yukarıda belirtilen Application_Error tekniğinden daha fazla kontrol sağlar.
Genel olarak MVC, hataların nasıl ele alınacağı konusunda size büyük bir kontrol hassasiyeti verir. Bu kontrole ihtiyacınız yoksa, ASP.NET'e web.config'inizdeki hata sayfalarını tanımlama gibi şeyler yapmanın yollarını geri alabilirsiniz.