<分区>
我在 Java 11 中使用 log4j2 (2.11.1) 并尝试使用以下方法获取 Logger
对象:
private static final Logger LOG = LogManager.getLogger();
(从 org.apache.logging.log4j
中的 log4j-api
导入)
在运行时,我收到以下错误:
WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.UnsupportedOperationException: No class provided, and an appropriate one cannot be found.
at
org.apache.logging.log4j.LogManager.callerClass(LogManager.java:555)
at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:580)
at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:567)
at app.App.<clinit>(App.java:11)
这确实有意义 - getCallerClass 不受支持,因此记录器无法确定类名。
它应该以这种方式工作吗?当然,我不必将类名硬编码到每个记录器中吗?