2016-04-21 38 views
6

スタンドアロンのSpringブートWebアプリケーション(実行可能なjar)では、埋め込まれたTomcatインスタンスのHTTPアクセスログをstdoutに送信することをSpringブートにどのように伝えますか?埋め込みTomcatのアクセスログをstdoutに送るようSpringブートにどのように伝えますか?

+0

springとtomcatのログはデフォルトでinfoに設定されているので、ログレベルをdebugに設定する必要があると思います。ログには完全修飾クラス名が付いているので、ログのソースを知ることができます。 –

+0

@RahulSharmaロギングレベルは、アペンダーの出力場所(ファイル、標準出力、URLなど)にはまったく影響しません。 stdoutに行くには、すべての出力(Tomcatアクセスログを含む)が必要です。 Tomcatの例外はすべて簡単ですが、Tomcatのログは難しいです。 –

+0

申し訳ありませんが、あなたはログの100%を見たいと思っていました。そして、[docs](https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html#boot-features-logging-file-output)の春のブートの書き込みデフォルトでコンソールにログを記録するので、なぜあなたがそれらを見ないのかわかりません。また、埋め込みのTomcatを使用していますか?はいの場合は、埋め込みサーバーのプロパティ[here](https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html) –

答えて

6

Logbackを使用する場合、これにはlogback-accessを使用できます。

TeeFilter(リクエスト&応答のロギング)を追加するために、依存関係ch.qos.logback:logback-access

オプションJavaconfigを追加します。

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

Javaconfig組み込みTomcatの場合:logback-access.xml

ため

@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; 
} 

内容

+0

を参照してください。ログアウトし、既にコンソールアペンダを使用しています:)欠けている部分は 'TomcatEmbeddedServletContainerFactory' bean設定でした。素晴らしい答え! –

関連する問題