Come disabilitare la registrazione della console in Spring Boot

1. Panoramica

Di solito, i log della console ci danno l'opportunità di eseguire il debug del nostro sistema in modo semplice e intuitivo. Tuttavia, ci sono occasioni in cui non vogliamo abilitare questa funzione nel nostro sistema.

In questo breve tutorial vedremo come evitare di accedere alla console durante l'esecuzione di un'applicazione Spring Boot .

Lo manterremo semplice con esempi diretti al punto che mostrano come ottenere questo risultato, indipendentemente dal fatto che utilizziamo Logback, Log4js2 o anche il framework Java Util Logging.

Per saperne di più sui framework di registrazione per Spring Boot, suggeriamo di dare un'occhiata al nostro tutorial sul log in Spring Boot.

2. Come disabilitare l'output della console per il logback

Se il nostro progetto utilizza gli avviatori Spring Boot, verrà inclusa anche la dipendenza Spring-boot-starter-logging .

Questo particolare starter configura Logback come framework predefinito e inizialmente accede solo alla console per impostazione predefinita.

Questa configurazione può essere personalizzata aggiungendo un file logback-spring.xml alle nostre risorse.

Ad esempio, configuriamo l'XML in modo da disabilitare l'output della console e accedere solo a un file:

Inoltre, avremo bisogno della proprietà di configurazione logging.file nel nostro file application.properties :

logging.file=baeldung-disabled-console.log

Nota: ciò che in realtà disabilita l'output della console qui è il fatto che non includiamo console-appender.xml nel nostro XMLfile, quindi anche un tag di configurazione vuoto farebbe il trucco.

In alternativa, possiamo evitare di creare l'XMLsovrascrivendo la configurazione predefinita con le proprietà dell'applicazione .

Ad esempio, possiamo potenzialmente utilizzare la proprietà logging.pattern.console :

logging.pattern.console=

Questa proprietà viene tradotta nella proprietà di sistema CONSOLE_LOG_PATTERN , che viene quindi utilizzata dalla configurazione della console predefinita di Spring.

Questo approccio, ovviamente, non è così pulito e solido come il precedente . Non è lo scopo previsto della proprietà, quindi questo "hack" potrebbe non essere supportato da Logback a un certo punto.

Inoltre, possiamo disabilitare tutte le attività di registrazione impostando il valore del livello del logger root su OFF :

logging.level.root=OFF

3. Come evitare di accedere alla console con Log4j2

Come forse sappiamo, Log4j2 supporta i formati XML, JSON, YAML o delle proprietà per configurare il comportamento di registrazione.

Per semplicità, questa volta mostreremo solo un semplice esempio di un file log4j2.xml .

Gli altri formati rispettano la stessa struttura di configurazione:

Come per la configurazione Logback, il motivo per cui il framework evita di accedere alla console non è la configurazione "di per sé", ma il fatto che il Root Logger non contiene un riferimento a un Appender della console.

4. Come disabilitare la registrazione della console per la registrazione di Java Util

Java Util Logging (o semplicemente 'JUL') potrebbe non essere la soluzione di registrazione più popolare per le applicazioni Spring Boot al giorno d'oggi.

Ad ogni modo, analizzeremo come possiamo sbarazzarci dei log della console, nel caso in cui il framework sia presente nel nostro progetto.

Tutto quello che dobbiamo fare è aggiungere i seguenti valori al file logging.properties predefinito nella nostra cartella delle risorse:

handlers=java.util.logging.FileHandler java.util.logging.FileHandler.pattern=baeldung.log java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter

E includi la proprietà logging.file nel nostro file application.properties . Qualsiasi valore farà il trucco:

logging.file=true

5. conclusione

Con questi brevi esempi, ora possiamo disabilitare i log della console nella nostra applicazione in modo semplice, indipendentemente dal framework di registrazione che stiamo utilizzando.

Come sempre, possiamo trovare le implementazioni degli esempi nel nostro repository Github.