2016-04-21 9 views
6

In un'applicazione Web di avvio di avvio autonomo (jar eseguibile), come si comunica a Spring Boot che vogliamo che i registri di accesso HTTP dell'istanza di Tomcat incorporati vengano inviati allo stdout?Come si dice a Spring Boot di inviare i log di accesso di Tomcat incorporati allo stdout?

+0

Penso che sarebbe sufficiente impostare il livello di registrazione su debug perché i registri di primavera e tomcat sono impostati su informazioni per impostazione predefinita. I log avrebbero il nome di classe completo in modo da conoscere l'origine del log. –

+0

@RahulSharma il livello di registrazione non ha alcun impatto sulla posizione di output dell'appender (ad esempio file, stdout, URL, ecc.). Abbiamo bisogno di tutti gli output (inclusi i log di accesso di Tomcat) per andare allo stdout. Tutto eccezionale Tomcat è facile, sono i registri di Tomcat che sono difficili. –

+0

Spiacente, ho pensato che volessi vedere il 100% dei log. E dai [documenti] (https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html#boot-features-logging-file-output) scrive il boot in primavera registri su console per impostazione predefinita, quindi non so perché non li vedi. Inoltre, stai usando tomcat incorporato? Se sì, dai un'occhiata alle proprietà del server incorporato [qui] (https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html) –

risposta

6

Se si utilizza Logback, è possibile utilizzare logback-access per questo.

Aggiungi dipendenza ch.qos.logback:logback-access

opzionale Javaconfig per aggiungere Teefilter (richiesta registrazione & risposta):

@Bean(name = "TeeFilter") 
public Filter teeFilter() { 
    return new ch.qos.logback.access.servlet.TeeFilter(); 
} 

Javaconfig per Tomcat incorporato:

@Bean 
public EmbeddedServletContainerFactory servletContainer() { 
    TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory(); 

    LogbackValve logbackValve = new LogbackValve(); 

    // point to logback-access.xml 
    logbackValve.setFilename("src/main/resources/logback-access.xml"); 

    tomcat.addContextValves(logbackValve); 

    return tomcat; 
} 

Contenuti per logback-access.xml

<configuration> 
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <encoder> 
     <Pattern>combined</Pattern> 
     <Pattern>%fullRequest%n%n%fullResponse</Pattern> 
    </encoder> 
    </appender> 

    <appender-ref ref="STDOUT" /> 

</configuration> 
+0

Usiamo davvero Logback e già utilizzato l'appender della console :) Il pezzo mancante era la configurazione del bean 'TomcatEmbeddedServletContainerFactory'. Bella risposta! –

Problemi correlati