2015-08-25 26 views
6

Desidero modificare il livello di registro di un'applicazione Spring Boot in esecuzione.Livello registro applicazione di avvio a molla

È possibile modificare il livello di registro in fase di esecuzione? In questo momento ho la configurazione del logger nel mio barattolo stesso.

+1

Partenza la risposta a questa domanda qui: http: //stackoverflow.com/questions/5448673/slf4j-logback-how-to-configure-loggers-in-runtime – style

risposta

13

La modifica del livello di registro mentre l'applicazione è in esecuzione è parte dell'implementazione del logger sottostante.

Non è stata specificata l'implementazione del logger che si sta utilizzando, quindi presumo che si stia utilizzando il logback predefinito fornito dalle dipendenze spring-boot-starter-logging o spring-boot-starter-web.

Commentare qualsiasi configurazione relativa al logger da application.properties ad es.

#logging.path=logs 
#logging.level.org.springframework.web= INFO 
#logging.level.=INFO 

Aggiungere logback.xml nella root del vostro classpath con tag Vedere http://logback.qos.ch/manual/jmxConfig.html

Avviare l'applicazione e aprire JConsole e andare alla scheda MBeans. Selezionare il pacchetto ch.qos.logback.classic.JMxConfigurator.Under individuare l'operazione setLoggerLevel ad es. org.springframework.web, DEBUG

enter image description here

Il cambiamento sarà immediatamente efficace. Per le altre librerie di logger, consultare la guida per l'utente di avvio a molla http://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html E informazioni specifiche della libreria ad es. per log4j http://www.sureshpw.com/2012/04/dynamic-logging-with-log4j.html

Un approccio diverso è quello di ripetere il procedimento da seguire, senza JMX e utilizzare la configurazione watcher

+0

Grazie per la spiegazione dettagliata. Sto usando il logback così posso seguire gli approcci che hai delineato sopra –

+0

questa risposta e http://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html ha aiutato molto. un'altra opzione che posso pensare è autowiring 'org.springframework.boot.logging.logback.LogbackLoggingSystem' e utilizzare' LogbackLoggingSystem.setLogLevel (String loggerName, livello LogLevel) 'per modificare a livello di codice il livello di registrazione in fase di runtime. in questo modo, puoi costruire il tuo ambiente di riposo intorno e controllarlo come vuoi (assicurati di proteggere l'endpoint in modo corretto) – burcakulug

+0

@Prabhakar D - Accetta questo come risposta piuttosto che l'altro solo risposta. – Mubin

3

Se si desidera cambiare la livello di registrazione di un'applicazione Spring Boot già in esecuzione, puoi dare un'occhiata a spring-cloud-config. Vedi anche: http://cloud.spring.io/spring-cloud-config/:

Primavera cloud Config fornisce supporto server e lato client per la configurazione esternato in un sistema distribuito. Con il server di configurazione hai una posizione centrale per gestire le proprietà esterne per le applicazioni in tutti gli ambienti.

È possibile gestire centralmente le proprietà di configurazione del server e nella vostra applicazione corrente - applications.properties di file (check bootstrap.properties) creare una voce per

spring.application.name=application name 

Utilizzando @RefreshScope annotazioni nell'applicazione client si sarà in grado di aggiornare il runtime dell'applicazione e visualizzare la proprietà del livello di registrazione aggiornato.

2

Con il rilascio di Spring Boot 1.5, se si dispone di attuatore nell'applicazione di avvio, è possibile farlo tramite un'API REST pronta all'uso.

1.5 l'attuatore fornisce un endpoint denominato "logger" che è possibile ottenere per visualizzare la configurazione e il POST per apportare modifiche al runtime.

Es.

curl -i -X POST -H 'Content-Type: application/json' -d '{"configuredLevel": "DEBUG"}' http://localhost:8080/loggers/org.springframwork 
Problemi correlati