Cenário: você desenvolve um sistema para uma empresa e 4 meses depois a gerência da empresa detecta um problema nos dados e solicita uma auditoria pra saber o que causou aquilo e quem é o responsável.
Este cenário é mais comum do que parece, em várias situações talvez não chegue a diretoria, mas algum usuário pede informação de como dada informação chegou ou saiu do sistema. Como você atenderia a solicitação? Se você não tem ainda uma resposta, vou apresentar uma alternativa, um plugin para CakePHP desenvolvido pela equipe da Radig (eu incluso) e disponível no seu github: github.com/radig/auditable
O objetivo do Auditable é muito simples: tornar qualquer sistema em CakePHP auditável.
O plugin é composto de duas peças chaves: uma classe de configuração e um behavior. Para tornar um modelo auditável, basta “plugar” o behavior à ele, a partir daí todas as informações criadas, alteradas ou removidas.
Há ainda um helper para ajudar na formatação das entradas do log e um controller simples que pode ser usado para visualizar o log.
Há casos de teste para todo o behavior e informações sobre sua configuração em seu readme: https://github.com/radig/auditable/blob/master/README.textile
Bom proveito =]
————–
Conforme o assunto se desenrolou nos comentários, implementamos os modelos Logger e LogDetail para uso junto ao CakeMongoDb para armazenar os logs no banco de dados MongoDB. Você pode conferir no plugin AuditableMongoLogger
Qualquer dúvida ou sugestão pode usar os comentários ou o Github ;]