我正在使用 log4j2 (2.11.1) 和 Java 11 并尝试获取Logger
对象使用:
private static final Logger LOG = LogManager.getLogger();
(进口自log4j-api
in org.apache.logging.log4j
)
在运行时,我收到以下错误:
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 不受支持,因此记录器无法确定类名。
它应该这样工作吗?我当然不必将类名硬编码到每个记录器中吗?
原因是没有从以下位置获取多版本类文件META-INF/versions/*
因为我在构建阴影罐子时没有设置多重发布标志。
我需要添加:
Multi-Release:true
根据我的清单,一切都开始工作了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)