Учитывая, что аудит часто подразумевает ответственность , вы можете занести в журнал те действия, которые могут способствовать любому событию, когда кто-то / что-то должно быть подотчетно ..
- Изменение клиентских записей
- Изменение конфигурации
- Удаление данных
Хорошей идеей является сохранение некоторых из этих версий версионными, чтобы вы могли откатывать изменения жизненно важных данных. Добавление «кто изменил» в первую очередь довольно просто.
Если кто-то не имеет прямого доступа к базе данных, часто может быть достаточно регистрации приложения любого события, которое влияет на базу данных ... такого как транзакция, изменяющая много таблиц .... Пока вы можете связать проверяемое логическое действие с логической единицей подотчетности, независимо от того, на какую подсистему оно влияет, вы сможете отслеживать подотчетность.
Вы не должны напрямую регистрировать вызовы методов и изменения базы данных, но бизнес-логику, которая привела к этим вызовам и изменениям, и кто использовал эту логику. Небольшое количество внутреннего кода , связывающего причинность между вызовами / изменениями таблицы и некоторыми сообщениями аудита, также будет полезно (если у вас есть ресурсы).
Думайте об элементах аудита вашего приложения как о дереве событий. Корень - это то, что вы регистрируете, например, «Дейв удалил запись клиента 2938». Любые дочерние элементы корня могут быть зарегистрированы, и вы можете привязать его к корню, если важно зарегистрировать его как часть события аудита. Например, вы можете утверждать, что какое-то событие аудита, «Дейв удален ...», было связано с некоторой информацией для выставления счетов, также идущей в обход, как часть ограничения или чего-то еще
Но я не эксперт.