使用Log4j2 ExtendedLoggerGenerator CLI时缺失Strings类的问题及解决
Log4j2自定义日志类生成报错及解决方法
尝试通过Log4j2官方文档提供的CLI命令生成自定义日志类,执行命令如下:
java -cp log4j-core-2.19.0.jar org.apache.logging.log4j.core.tools.ExtendedLoggerGenerator \ com.mycomp.ExtLogger DIAG=350 NOTICE=450 VERBOSE=550 > com/mycomp/ExtLogger.java
执行后持续报错,异常信息如下:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/logging/log4j/util/Strings at org.apache.logging.log4j.core.util.Integers.parseInt(Integers.java:43) at org.apache.logging.log4j.core.util.Integers.parseInt(Integers.java:54) at org.apache.logging.log4j.core.tools.Generate$LevelInfo.<init>(Generate.java:1044) at org.apache.logging.log4j.core.tools.Generate$LevelInfo.parse(Generate.java:1051) at org.apache.logging.log4j.core.tools.Generate.generate(Generate.java:1097) at org.apache.logging.log4j.core.tools.Generate.generate(Generate.java:1063) at org.apache.logging.log4j.core.tools.Generate.access$100(Generate.java:48) at org.apache.logging.log4j.core.tools.Generate$ExtendedLogger.main(Generate.java:1030) at org.apache.logging.log4j.core.tools.ExtendedLoggerGenerator.main(ExtendedLoggerGenerator.java:28) Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.util.Strings at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
最初仅添加log4j-api-2.19.0.jar到类路径仍无法解决问题,后续发现需同时指定log4j-api-2.19.0.jar和log4j-core-2.19.0.jar两个包,修正后的命令如下:
java -cp log4j-api-2.19.0.jar;log4j-core-2.19.0.jar org.apache.logging.log4j.core.tools.ExtendedLoggerGenerator ExtLogger DIAG=350 NOTICE=450 VERBOSE=550 > ExtLogger.java
内容的提问来源于stack exchange,提问作者User1751
相关产品推荐
相关产品推荐

