I am building a multi-layered application that has an ASP.NET MVC web application. It conists of the usuals like presentation layer, business layer, data layer, etc. How would one create/use a decent exception handling mechanism? I read on Patterns and Practices that you need to bubble up exceptions to the various layers.

Also logging. Where does logging take place? In the MVC web application?

How would you redirect to various error pages depending on the type of error?

I would appreciate some feedback regarding this, and some articles if you guys have some. If there are any sample apps that make use of a decent exception hadling and logging strategy please let me know :)