99 lines
2.5 KiB
Java
99 lines
2.5 KiB
Java
package dev.lions.unionflow.server.entity;
|
|
|
|
import jakarta.persistence.*;
|
|
import lombok.Getter;
|
|
import lombok.Setter;
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
/**
|
|
* Entité pour les logs techniques du système.
|
|
* Enregistre les erreurs, warnings, et événements système.
|
|
*
|
|
* @author UnionFlow Team
|
|
* @version 1.0
|
|
* @since 2026-03-15
|
|
*/
|
|
@Entity
|
|
@Table(name = "system_logs", indexes = {
|
|
@Index(name = "idx_system_log_timestamp", columnList = "timestamp"),
|
|
@Index(name = "idx_system_log_level", columnList = "level"),
|
|
@Index(name = "idx_system_log_source", columnList = "source"),
|
|
@Index(name = "idx_system_log_user_id", columnList = "user_id")
|
|
})
|
|
@Getter
|
|
@Setter
|
|
public class SystemLog extends BaseEntity {
|
|
|
|
/**
|
|
* Niveau du log (CRITICAL, ERROR, WARNING, INFO, DEBUG)
|
|
*/
|
|
@Column(name = "level", nullable = false, length = 20)
|
|
private String level;
|
|
|
|
/**
|
|
* Source du log (Database, API, Auth, System, Cache, etc.)
|
|
*/
|
|
@Column(name = "source", nullable = false, length = 100)
|
|
private String source;
|
|
|
|
/**
|
|
* Message principal du log
|
|
*/
|
|
@Column(name = "message", nullable = false, length = 1000)
|
|
private String message;
|
|
|
|
/**
|
|
* Détails supplémentaires (stacktrace, contexte, etc.)
|
|
*/
|
|
@Column(name = "details", columnDefinition = "TEXT")
|
|
private String details;
|
|
|
|
/**
|
|
* Date/heure du log
|
|
*/
|
|
@Column(name = "timestamp", nullable = false)
|
|
private LocalDateTime timestamp;
|
|
|
|
/**
|
|
* Identifiant de l'utilisateur concerné (optionnel)
|
|
*/
|
|
@Column(name = "user_id", length = 255)
|
|
private String userId;
|
|
|
|
/**
|
|
* Adresse IP de la requête (optionnel)
|
|
*/
|
|
@Column(name = "ip_address", length = 45)
|
|
private String ipAddress;
|
|
|
|
/**
|
|
* Identifiant de session (optionnel)
|
|
*/
|
|
@Column(name = "session_id", length = 255)
|
|
private String sessionId;
|
|
|
|
/**
|
|
* Endpoint HTTP concerné (optionnel)
|
|
*/
|
|
@Column(name = "endpoint", length = 500)
|
|
private String endpoint;
|
|
|
|
/**
|
|
* Code de statut HTTP (optionnel)
|
|
*/
|
|
@Column(name = "http_status_code")
|
|
private Integer httpStatusCode;
|
|
|
|
/**
|
|
* Initialisation automatique du timestamp
|
|
*/
|
|
@PrePersist
|
|
protected void onCreate() {
|
|
super.onCreate(); // Appel du @PrePersist de BaseEntity (dateCreation, actif)
|
|
if (timestamp == null) {
|
|
timestamp = LocalDateTime.now();
|
|
}
|
|
}
|
|
}
|