Это полностью зависит от потребностей вашего бизнеса. Иногда у компаний есть требования, чтобы каждое отдельное изменение каждого элемента, по пользователю и времени, регистрировалось. Некоторые требуют, чтобы и каждый отдельный прочитал данных, которые будут зарегистрированы. Некоторые приложения записывают только при изменении определенных типов данных. Это зависит от того, что вы хотите. Получается разумная информация: кто, что, когда ...
Ведение журнала аудита, как правило, не носит технического характера, как в случае с выписками; вы бы не начали с журналов аудита для отладки, хотя вы могли бы использовать их, если хотите. Но обычные журналы приложений лучше подходят для устранения неполадок, поскольку они обычно содержат трассировки стека и тому подобное, а журналы аудита - нет.
Что касается БД или плоского файла, опять же, это зависит. Запись в БД особенно привлекательна для Hibernate / JPA, поскольку вы можете подключиться к системе событий вашего уровня персистентности для генерации событий аудита. Это вполне естественное отображение, потому что в Hibernate / JPA есть события для «сохранения», «обновления», «удаления» и т. Д., Именно то, что вы хотите проверять. Если требования требуют, чтобы определенные типы пользователей могли просматривать информацию журнала, то наличие данных в БД также полезно. Кроме того, большинство предприятий регулярно обновляют свои данные, что также сохраняет информацию аудита.
С другой стороны, вы не можете превзойти простоту регистрации плоских файлов, если вам просто нужно вести запись.