Logback-accessをSpring Bootの組込みTomcat or 組込みJettyで
使いやすくする自動設定を作りました。
Maven Central Repository に公開もしてみました。
Logback-access とは
サーブレットコンテナのHTTPアクセスログを採るライブラリです。
簡単なアクセスログなら server.tomcat.accesslog.*
あたりをいじれば
採れそうでしたが、自分の興味から Logback-access を使ってみました。
自前の Encoder や Layout を使いたい場合にいいかも。かも。
経緯
LogbackValve
を Spring Boot の組込みTomcatに仕込んでみました。
が、 LogbackValve はデフォルトで
$TOMCAT_HOME/conf/logback-access.xml
を参照するようです。
組込みTomcatだとテンポラリフォルダを参照しにいきました...
LogbackValve#setFilename(String)
でファイルパスの変更も試しましたが、
残念なことに内部で new File(String)
してて、JARファイル内のリソースは使えませんでした...
- Spring Boot アプリならJARファイル1つで動くようにしたい!
- 前々から Spring Boot の自動設定の仕組み (@Conditional系アノテーション等) を使ってみたかった!
とゆーことで、今回 Logback-access の Auto-Configuration を作ってみました。
半分学習目的で Spring Boot の俺俺自動設定を作ってみてる。Conditional系アノテーションで色々な条件指定出来るの面白いなぁ。すごいなぁ。
— Akihiro Kondo (@akihyro) 2015, 12月 15
作ったもの
クラスパスに加えれば、
クラスパス直下の設定ファイル logback-access.xml
を使って、
Tomcatの場合はLogbackValve, Jettyの場合はRequestLogImplを自動で仕込みます。
使い方
spring-boot-starter-web
プロジェクトを用意
Tomcatならこちら。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
Jettyならこちら。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jetty</artifactId> </dependency>
依存関係に spring-boot-ext-logback-access
を追加
<dependency> <groupId>net.rakugakibox.springbootext</groupId> <artifactId>spring-boot-ext-logback-access</artifactId> <version>1.0</version> </dependency>
クラスパス直下に設定ファイル logback-access.xml
を配置
commonパターンでコンソールに吐きだすだけならこんな感じ。
詳しい設定方法は Logback-access 公式ページ に載ってます。
<configuration> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>common</pattern> </encoder> </appender> <appender-ref ref="CONSOLE" /> </configuration>
application.yml
等でプロパティを調整すれば、ファイルパスは変更できます :)
logback.access.config: "classpath:your-logback-access.xml"
以上!
関連記事