Как правильно логировать базу данных?

Делается отдельная таблица для логов, или как?
Расскажите поподробнее про то, как сейчас принято в продакшене.
  • Вопрос задан
  • 1046 просмотров
Пригласить эксперта
Ответы на вопрос 4
azerphoenix
@azerphoenix Куратор тега Spring
Java Software Engineer
Если честно, то не совсем понятно чего вы хотите.
В БД есть логирование. Вот, например PostgreSQL

Если речь идет о логах hibernate & jpa, то вот, полезная статья:
https://www.baeldung.com/sql-logging-spring-boot
Можно установить уровень логирования, а затем например, вывести логи в файл

Если речь про Spring & Hibernate (про аудирование), например, когда какая сущность была добавлена или обновлена, то есть например, EntityListeners.

Вот, простой пример:
@SpringBootApplication
@EnableJpaAuditing
public class Application {
  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }
}


сущность User -
@Entity
@EntityListeners(AuditingEntityListener.class)
@Table(name = "users")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private Long id;

    @CreatedDate
    @Column(updatable = false)
    private LocalDateTime created;

    @LastModifiedDate
    private LocalDateTime lastModified;

}
Ответ написан
@Akela_wolf
Extreme Programmer
Логировать в БД (в отдельную таблицу) спринг вполне может. Но это, обычно, не очень хорошее решение. В промышленном использовании все-таки лучше логировать в файл, затем logstash -> elastic -> grafana/kibana или аналогичный стек. Можно graylog - решений в общем-то много и смысла нагружать именно реляционную БД логами обычно мало.
Ответ написан
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Определитесь что вы хотите логгировать.
1. уровень события БД это уже скидывается в системный лог
2. Изменения схемы, зависит от СУБД и в некоторых настраивается
3. Изменение данных, просто добавляете пользователя в отдельное поле
4. Версионность, то же что и в пп3 но версия и измененные столбцы (крайне не советую)
5. Blame триггер на какие то действия, пишется в отдельную таблицу, тут все зависит от бизнеса

Что то еще. Опишите что хотите в разрезе бизнеса, только обьясните как тупому. Откуда, кто, зачем и что
Ответ написан
AgentSmith
@AgentSmith
Это мой правильный ответ на твой вопрос
В самой базе данных уже есть встроенное логгирование
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы