Spring Boot – Logging

Spring Boot – Logging

In un’architettura a micro servizi i log svolgono un ruolo fondamentale.

Il formato predefinito dei log in Spring Boot è:

Le informazioni mostrate sono:

  • Data e ora
  • Il livello del log ( INFO )
  • ID processo
  • Il — che è un separatore
  • Il nome del thread, racchiuso tra parentesi quadre []
  • Nome logger, mostra il nome della classe che ha generato la loggata
  • Il messaggio vero e proprio

Livelli di Log

Ricordiamo velocemente che si definisce il livello di log del messaggio una specie di priorità assegnato ad esso.

La seguente tabella definisce i livelli dei log in ordine decrescente di severità. La colonna di sinistra indica il livello di log designato e alla destra c’è una breve descrizione.

LivelloDescrizione
OFFIl livello più alto possibile, viene usato per disattivare i log.
FATALErrore importante che causa un prematuro termine dell’esecuzione. Ci si aspetta che questo sia visibile immediatamente all’operatore.
ERRORUn errore di esecuzione o una condizione imprevista. Anche questo deve essere immediatamente segnalato.
WARNUsato per ogni condizione inaspettata o anomalia di esecuzione, che però non necessariamente ha comportato un errore.
INFOUsato per segnalare eventi di esecuzione (esempio: startup/shutdown). Deve essere segnalato ma poi non mantenuto per tanto tempo.
DEBUGUsato nella fase di debug del programma. Viene riportato nel file di log.
TRACEAlcune informazioni dettagliate. Ci si aspetta che venga scritto esclusivamente nei file di log.

Si ha un livello di log dell’applicazione e un livello di log per ogni messaggio stampato.

Ad esempio, impostando un livello di log dell’applicazione pari a DEBUG verranno stampati tutti messaggi con livello DEBUG e tutti i messaggi con i livelli superiori a DEBUG, ossia INFO, WARN, ERROR, FATAL, OFF.

In genere, i livelli di log vengono usati per evitare una eccessiva verbosità dei messaggi: alcune informazioni sono necessarie durante lo sviluppo ma non quando l’applicazione è in produzione.

Esempio

Durante la fase di sviluppo, possiamo settare il livello dei log dell’applicazione a DEBUG, quindi stampare solo i messaggi di livello DEBUG e superiore.

Quando si passa in produzione, impostiamo il livello dei log dell’applicazione a INFO, riducendo in questo modo il numero di informazioni superflue in questa fase.

Configurare il logging

La configurazione del logging viene impostata nel file di properties.

Esempio

Application.yml

# ==============================================================
# = Articoli Web Service - Versione Autenticazione JWT
# ==============================================================

server:
  port: 5051

spring:
  application:
    name: ProductsWebService


# ==============================================================
# = Proprietà Livello Log
# = Default ERROR, WARN e INFO 
# = Levels: TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF
# ============================================================== 

logging:
  file:
    name: ArtSrv.log
    max-size: 1MB
    #path: "/logs"
  pattern:
    file: "%d{ dd-MM-yyyy } [%thread] %-5level %logger{36} - %msg%n"
    #console: "%d{dd-MM-yyyy HH:mm:ss} - %msg%n"
    
  # Livello del Log generale
  level:
   root: WARN

L’elemento più importante è il settaggio che riguarda il livello di log, in questo caso WARN:

# Livello del Log generale
  level:
   root: WARN

Avviando il nostro servizio, vedremo pochissime loggate:

In questo caso, abbiamo settato i package org.hibernate e org.springframwork.web a livello INFO e il package org.springframework.security a DEBUG.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *