3.11 Infos-logs

3.11.1 - Types de log

Actuellement, deux types de log existent :

  • Les logs applicatives générées par les frameworks, les librairies et le code applicatif permettant de suivre l’activité des applications.
  • Les access log généré par le serveur WEB et contenant exclusivement les traces des requêtes HTTP.

3.11.2 - Format des logs

3.11.2.1 - Format des logs applicatives

La configuration du format des logs applicatives se paramètre dans un fichier de configuration SpringBoot avec la clef logging.pattern.console.

La configuration actuelle est très proche de la configuration par défaut de SpringBoot mais adaptée pour être similaire au format des access log : [%d{dd/MMM/yyyy:HH:mm:ss Z}] ${PID:-} [%X{traceId:-},%X{parentSpanId:-},%X{spanId:-}] %-5level %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:%wEx} avec

  • [%d{dd/MMM/yyyy:HH:mm:ss Z}] : la date et l’heure formatées
  • ${PID:-} : l’identifiant du processus
  • [%X{traceId:-},%X{parentSpanId:-},%X{spanId:-}] : les éléments de trace Sleuth (cf. §3.12)
  • %-5level : le niveau de log
  • %-40.40logger{39} : la classe générant la log
  • %m%n : le message + le retour à la ligne
  • ${LOG_EXCEPTION_CONVERSION_WORD:%wEx} : la gestion d’exception

Ceci donne des logs du type :

[14/janv./2022:20:36:50 +0100] 15400 [,,] DEBUG f.g.d.p.s.s.a.SocleSoumissionApplication : Running with Spring Boot v2.6.1, Spring v5.3.13

3.11.2.2 - Format des access logs

La configuration des access logs dépend du serveur WEB utilisé. Dans le cas des micro-services, il s’agit de Tomcat donc la configuration est server.tomcat.accesslog.pattern avec la valeur %t %a [%{X-B3-TraceId}i,%{X-B3-parentspanid}i,%{X-B3-SpanId}i] %r %s (%B b - %D ms) avec

  • %t : la date et l’heure formatées
  • %a: l’IP de l’appelant
  • [%{X-B3-TraceId}i,%{X-B3-parentspanid}i,%{X-B3-SpanId}i] : les valeurs des entête Sleuth (cf. §2.6.2.3)
  • %r : la première ligne de la requête comprenant la méthode HTTP, l’URI et le protocole
  • %s : le code HTTP de la réponse
  • %B b: le poids de la réponse
  • %D ms : le temps de traitement de la requête

Ceci donne des logs du type :

[14/Jan/2022:20:51:53 +0100] 127.0.0.1 4zc-fbrt4-syevbq-24222443474ed475-df4ee67a6ee65a9d GET /socle/document/teledossier/eta-GQ11-3P0D-KIC0/document HTTP/1.1 200 (1724 b - 203 ms)

3.11.3 - Configuration par environnement

3.11.3.1 - Logs en local

La configuration des logs en local se trouve dans les fichiers application-accesslog.properties et application-log.properties du répertoire 2-code/socle/socle-commun/src/main/resources/.

Cette configuration des access logs génère un fichier. Mais celle des logs applicatives envoie les lignes de logs vers la sortie standard. Ainsi, dans Eclipse, les logs arrivent dans la console. Et, en démarrant les micro-services depuis un script SH, les logs arrivent dans un fichier log_xxx.log.

3.11.3.2 - Logs hors local

La configuration locale des logs ne doit pas être reprise dans les autres environnements !