Spring Boot - Logback-access が使いやすくなる自動設定を作って公開した
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 (@akkinoc) December 15, 2015
作ったもの
akihyro/spring-boot-ext-logback-access - GitHub
クラスパスに加えれば、クラスパス直下の設定ファイル 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"
以上!