Como você implementa a trilha de auditoria de seus objetos (programação)?

Eu preciso implementar uma trilha de auditoria para Adicionar / Editar / Excluir em meus objetos, estou usando um ORM (XPO) para definir meus objetos etc. Eu implementei um objeto de trilha de auditoria que é acionado em

OnSavingOnDeleting

Do objeto base, e armazeno as alterações na tabela Audit-AuditTrail (Mast-Det), para alterações de campo. etc. usando alguns serviços de método chamados.

Como você implementa a trilha de auditoria em seu código OOP? Por favor, compartilhe suas ideias? Algum padrão etc? Melhores práticas etc? Outra coisa é que como desabilitar a auditoria ao executar o teste de unidade, desde que eu não precise de auditoria-los, mas desde objeto base tem o código.

Mudanças no objeto (editar / adicionar / del) e quais mudanças de campo precisam ser auditadas

questionAnswers(6)

yourAnswerToTheQuestion