【Spring Boot】logbackがコンソールに出すステータスを非表示にしたい
作成日時: 2023/01/07
更新日時: 2023/06/24
# 状況
logbackで`filter`を使うため、`ch.qos.logback.classic.filter.LevelFilter`を呼び出すよう書いたところ、logbackがコンソールにこんなのを出すようになりました。
```
00:26:05,144 |-INFO in ch.qos.logback.classic.LoggerContext[default] - This is logback-classic version 1.4.5
00:26:05,151 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
00:26:05,151 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.xml]
00:26:05,152 |-INFO in ch.qos.logback.classic.BasicConfigurator@6af24f89 - Setting up default configuration.
(略)
00:26:05,380 |-INFO in ch.qos.logback.core.model.processor.DefaultProcessor@6c3ea73c - End of configuration.
00:26:05,380 |-INFO in org.springframework.boot.logging.logback.SpringBootJoranConfigurator@fc1b304 - Registering current configuration as safe fallback point
```
この出力が40行くらいあるので非表示にしたい。
あとfilter(というより`ch.qos.logback.classic.filter`?)を使わなければ出力されないがfilterは使いたい。。
ちなみに`LevelFilter`から`ThresholdFilter`に変えても同様に出力されました。
## 環境
Spring boot 3.0.1
logback-classic 1.4.5
logback-core 1.4.5
# TL;DR
logbackの`configuration`の最初に`statusListener`を指定して設定を上書きさせます。
```
(略)
```
`NopStatusListener`はlogbackのステータスを出力しないクラスです。
# 注意
[Logback公式のmanual](https://logback.qos.ch/manual/configuration.html)を見るとパーミッションのエラーのせいでアーカイブできない時とかにも役立つから**StatusListenerは登録しとけ**みたいな雰囲気があったので、非表示にするのはあまり良くなさそうです。。
(引用)
**Note that errors can also occur post-configuration, e.g. when a disk a full or log files cannot be archived due to permission errors. As such, it is highly recommended that you register a StatusListener as discussed below.**
自分は業務ではなく個人で使ってるプロジェクトだったので(エラー起きても大した損害がないので)気にせず非表示にしちゃいました。
# おまけ
恐らく下記のパッケージ(ch.qos.logback.core.status)にあるクラスのうち`StatusListener`を継承したクラスなら指定できそうです。
というかそこらへんの説明あるドキュメントを見つけられませんでした。。

# 参考文献
- [Logbackのconfiguration(公式)](https://logback.qos.ch/manual/configuration.html)
- [SLF4J(公式)](https://www.slf4j.org/index.html)