My method bounces between Chris's BCC and Marks logging depending on where the log needs to be visible. If it's for the users and they want it in the context of the application (my default) it gets logged there and most of my apps have a "purge" agent to clean these up, retaining the last n days of activity (typically 30). This has a problem though in that if you have a very busy database, you're flooding it with logs. In that case, tack on an aggregator that will aggregate and summarize your log documents on an hourly basis much like the Domino server log.
BCC to mail in is a very effective way though with lots of efficiency. Cleanup can be automated via policy, logs can be secured by ACL apart from the source apps, it can be clustered with your other mail.... it's a very nice option but has the overhead of one additional app per environment which could cost your client in terms of storage on their NAS.