この記事はこれの続きです
概要
SpringBootでログ出力をやったことないから、まず何をどうしたらいいか分からない という状態向けです。
- SpringBootの標準的な機能を使う。
- 最小限のコード。
という基礎的な内容です。
logback-spring.xml作成
logback-spring.xmlとは『ログ出力先』『ログフォーマット』などが書かれた ログ設定ファイル です。
これを 特定の場所に置くと SpringBootが勝手にログ機能を用意してくれます。
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE logback>
<configuration>
<!-- INFO以上のレベルのログは『FILE』という名前の設定でログ出力。 -->
<root level="INFO">
<appender-ref ref="FILE" />
</root>
<!-- ↓『FILE』という名前の設定はこう。 -->
<!-- 一定の規則にしたがってログファイルを切替(ローリング)。 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 時間でログファイルを切替。 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- ログ出力先フォルダーとログファイル名。 -->
<!-- ログファイル名に日時情報を埋め込みたい時は %d{yyyyMMdd} を使う。 -->
<!-- この設定の場合、日単位でログファイルが切り替わる。 -->
<fileNamePattern>C:\Neko\Log\%d{yyyyMMdd}.log</fileNamePattern>
<!-- ログファイル保存日数。 -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<!-- ログフォーマット。 -->
<!-- 『%』のあとの『-24』は『24文字でスペース埋め』という意味。 -->
<!-- スペース埋めによって縦揃えができるので、人が読みやすいログにできる。 -->
<pattern>%-24d{yyyy-MM-dd HH:mm:ss.SSS},%-6level,%-36thread,%-70logger{36},%msg%n</pattern>
</encoder>
</appender>
</configuration>
Controllerクラス
DemoController.java
package com.example.demo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class DemoController {
private final Logger log = LoggerFactory.getLogger(this.getClass());
@GetMapping("/")
public String getIndex(Model model) {
log.info("ログ出力にゃん");
log.info("ログ出力にゃんにゃん");
log.warn("うわーん");
log.error("やばい!");
return "/index";
}
}
実行結果
構成
この記事の続き
参考サイトさん
バージョン
Microsoft Windows [Version 10.0.19045.4170]
Spring Boot v3.1.10