Le langage utilisé est Java, avec le framework Spring.
API permettant de :
- récupérer les logs des chargements kbart dans un topic Kafka
- d'isoler les logs de niveau
error
et de générer un fichier de log mis à disposition de l'application cercles-bacon (lien cercles-bacon) - d'envoyer les logs (tout niveau confondu) en BDD
- d'exposer un web service permettant de récupérer les logs associés à un fichier kbart
(class LogsListener.java
)
Cette classe comporte un @KafkaListener
, listenInfoKbart2KafkaAndErrorKbart2Kafka
qui lit les messages kafka à partir du topic Kafka bacon.logs.toload
.
Chaque message kafka correspond à une entrée de log créée par les API kbart2kafka (lien github) et best-ppn-api (lien github).
Note
La key
de chaque message kafka comprend deux informations :
- le nom du fichier kbart
- Le numéro de la ligne du fichier kbart concernée par ce message de log
La présence d'un fichier de log temporaire portant le nom du fichier kbart en cours est contrôlée. Le cas échéant, les nouveaux messages de log sont ajoutés à la suite. Sinon, un nouveau fichier de log est créé et le premier message de log y est inscrit.
(class LogsListener.java
)
Le LogLevel
du message kafka est contrôlé. S'il est strictement de niveau ERROR
, alors il sera inscrit dans le fichier de log temporaire.
Avant cette inscription, la présence dudit fichier est contrôlée. S'il n'est pas présent, il est créé avant inscription du message kafka.
(class LogsListener.java
)
Quel que soit le LogLevel
des messages kafka, ils seront in fine envoyer en base de données.
La base de données choisie pour l'API est PostgreSQL (site officiel). l'API utilise le module JpaRepository pour l'accès à la BDD (documentation officielle)
La configuration de l'accès à la BDD PostgreSQL s'effectue dans différents fichiers.
Dans le fichier application.properties
:
spring.jpa.open-in-view=false
Dans les fichiers application-localhost.properties
, application-dev.properties
, application-test.properties
et application-prod.properties
# Base Postgres
spring.datasource.logsdb.driver-class-name=org.postgresql.Driver
spring.datasource.logsdb.jdbcurl=
spring.datasource.logsdb.username=
spring.datasource.logsdb.password=
spring.jpa.logsdb.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.logsdb.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.logsdb.generate-ddl=true
spring.jpa.logsdb.hibernate.ddl-auto=update
spring.jpa.logsdb.show-sql=false
spring.sql.logsdb.init.mode=never
Note
Certains champs devront être complétés :
spring.datasource.logsdb.jdbcurl
avec l'url d'accès à votre base de données
spring.datasource.logsdb.username
avec un username permettant l'écriture dans votre BDD
spring.datasource.logsdb.password
avec le password associé au username