Spring Bootのロギング
コードの作成
Commons Logging、Log4j、SLF4J、Logbackなど、さまざまなロギングフレームワークを使用できます。
Main.java
package sample.springboot;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
@EnableConfigurationProperties
public class Main {
private static final Logger logger = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
try (ConfigurableApplicationContext ctx = SpringApplication.run(Main.class, args)) {
logger.error("error log");
logger.warn("warn log");
logger.info("info log");
logger.debug("debug log");
logger.trace("trace log");
}
}
}
実行結果
2015-04-29 17:31:25.023 ERROR 8872 --- [ main] sample.springboot.Main : error log
2015-04-29 17:31:25.023 WARN 8872 --- [ main] sample.springboot.Main : warn log
2015-04-29 17:31:25.023 INFO 8872 --- [ main] sample.springboot.Main : info log
- デフォルトではINFOレベル以上のログが出力されます。
- 形式は日付、ログレベル、PID、スレッド名、ロガー名、ログメッセージです。
ファイル出力
デフォルトでは標準出力だけにログが出力されます。ログファイルを指定すると、ファイルにも出力されます。ログファイルは10 MBごとにローテーションします。
ファイル名を指定する
$ java -jar build/libs/spring-boot-sample.jar --logging.file=sample.log
$ dir /b *.log
sample.log
logging.fileで出力ファイル名を指定します。- 例ではコマンドライン引数を使用していますが、プロパティファイルでも設定できます。
- 対象ディレクトリが存在しない場合は自動的に作成されます。
フォルダーを指定する
$ java -jar build/libs/spring-boot-sample.jar --logging.path=logs
$ dir /b logs
spring.log
logging.pathでログ出力先フォルダーを指定します。- ログファイル名は
spring.logになります。 - ディレクトリが存在しない場合は自動的に作成されます。
ロガーごとにログレベルを設定する
$ java -jar build/libs/spring-boot-sample.jar --logging.level.sample.springboot.Main=TRACE
2015-04-29 18:14:17.969 ERROR 8288 --- [ main] sample.springboot.Main : error log
2015-04-29 18:14:17.970 WARN 8288 --- [ main] sample.springboot.Main : warn log
2015-04-29 18:14:17.970 INFO 8288 --- [ main] sample.springboot.Main : info log
2015-04-29 18:14:17.970 DEBUG 8288 --- [ main] sample.springboot.Main : debug log
2015-04-29 18:14:17.970 TRACE 8288 --- [ main] sample.springboot.Main : trace log
logging.level.[logger]=[log level]でロガーのログレベルを指定します。- ロガー名がFQCNの場合は、
--logging.level.sample.springboot=DEBUGのようにパッケージ単位でも指定できます。