Logbackに関して
Javaのアプリケーションでのロギングに関して、
Log4Jが有名なんですが、その後継?のLogbackについて、調べてみました。
実際は、SLF4J+Logbackの構成になります。
ちなみにライセンスは、 Eclipse Public License v1.0 or Lesser General Public License version 2.1なので、
組み込む場合は、どのライセンスを選択するか?そのアプリケーションで、組み込んでも問題ないか確認した方がいいかもしれません。
SLF4Jとは
最近?なのか、SLF4Jがないとワーニングなったりするフレームワークが
多くなっているぽい気がします。
SLF4Jは、Simple Logging Facade for Javaの略です。
Javaのロギング実装は、デフォルトのjava.util.loggingとかlog4jとかlogbackなど、
いろいろあるのですが、その実装を柔軟に切り替えることが出来るようにしているものです。
デザインパターンのFacadeパターンが採用されています。
Logbackの設定
POMファイルの依存関係を定義する部分にlogbackとslf4jを追加します。
<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>${logback.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency>
次にlogback.xmlの設定ファイルを作成して、クラスパスに通せば完了です。
その設定ファイルの書き方ですが、log4jに似ているので、慣れれば簡単だと思います。
log4jと同じく、コンソールに出したり、ファイルに出したりすることが可能です。
コンソールに出力する場合
<configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="debug"> <appender-ref ref="STDOUT" /> </root> </configuration>
ファイルに出力する場合
<configuration> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <File>/log/applicaiton.log</File> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>applicaiton.%d{yyyy-MM-dd}.log</FileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="debug"> <appender-ref ref="FILE" /> </root> </configuration>
Spring Frameworkに使う場合
Spring Frameworkのログ出力に使う場合は、Spring自体が、デフォルトで、commons-loggingを利用しているので、
それを除外する設定が必要になります。
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency>