log4jロガーインスタンスはLogManager.getLogger()によって作成されているとわかっています。これは、呼び出しクラスを検出するリフレクションマジックを行い、特定のログレベル設定にとって重要な名前です。 しかし、ロガーを手動で作成し、そのクラスの他のすべての依存関係と同様にSpringを使用して注入したい場合はどうすればよいですか?これを行うとき、呼び出し側のクラスはもちろんロガーに依存するものではなく、春です(ある工場)。だから、クラス名を検出することはもうできません。 質問はもっと簡単です:log4j2クラス名の検出はどういうわけかIoCで動作しますか?Log4j2 LogManager.getLogger()with Spring
public class SomeClassWithDependencies {
private final DependencyOne dependencyOne;
private final Logger logger;
@Inject
public SomeClassWithDependencies(
DependencyOne dependencyOne,
Logger logger) { // <- this is created by spring and operates on the name of some spring factory instead of SomeClassWithDependencies
this.dependencyOne = dependencyOne;
this.logger = logger;
}
}