1. ホーム
  2. java

[解決済み] なぜロガーは static final と宣言するのですか?

2022-04-28 02:06:12

質問

Java では、なぜロガーを宣言するのがベストプラクティスなのでしょうか? static final ?

private static final Logger S_LOGGER

解決方法は?

  • private - を使用することで、他のクラスが ハイジャック ロガー
  • static - クラスごとにロガーインスタンスが1つだけ存在するようにし、ロガーをシリアライズしようとする試みを回避します。
  • final - クラスの寿命が尽きるまでロガーを変更する必要がありません。

また、私は名前 log は、できるだけシンプルで、かつ説明的なものでなければなりません。

編集部:しかし、このルールには面白い例外があります。

protected final Logger log = LoggerFactory.getLogger(getClass());

とは対照的です。

private static final Logger log = LoggerFactory.getLogger(Foo.class);

前者の方法では、継承階層内のすべてのクラスで同じロガー名(実際のクラス名)を使用することができます。そのため、もし BarFoo に記録されます。 Bar loggerを使用します。この方が直感的にわかるという人もいます。