I am looking for advice on a high level design approach to build an audit trail for a financial application. Need to track every change made to every financial record. Our development team has spent much time and effort using SQL triggers to detect record-level changes. This turned out to be a major disaster as it caused significant performance problems. How are audit mechanisms effectively implemented in large .NET applications? Thanks in advance!