log4j 从带有标志的批处理运行java应用程序

uemypmqf  于 2022-12-23  发布在  Java
关注(0)|答案(1)|浏览(129)

我有一个jar,里面有类my.package.Foo,包含main方法。
此外,我还将Log4j配置为日志记录系统。
我想在捕获异常时打印完整的堆栈跟踪,但是我读到了这个主题:log4j not printing the stacktrace for exceptions,我认为我需要使用-XX:-OmitStackTraceInFastThrow标志。
所以我尝试调用我的应用程序与命令行这样:
java -XX:-OmitStackTraceInFastThrow -cp %JAR_LOCATION:% my.package.Foo
然而,我仍然错过了堆栈跟踪,我只得到简短的异常消息。
下面是我的log4j配置:

log4j.rootLogger=INFO, CONSOLE, FILE
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=log.txt
log4j.appender.FILE.ImmediateFlush=true
log4j.appender.FILE.Threshold=debug
log4j.appender.FILE.Append=false
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%d{HH:mm:ss.SSS} %-4p %c{2}.%m%n
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{HH:mm:ss.SSS} %-4p %c{2}.%m%n

我错过了什么?

4dbbbstv

4dbbbstv1#

试着这样做:

set JAR_LOCATION=c:\any folder with spaces\jar
java -XX:-OmitStackTraceInFastThrow -cp "%JAR_LOCATION:~%" my.package.Foo

您必须从%JAR_LOCATION:%中删除":"字符,或者使用%JAR_LOCATION:~%将其取消引号,然后在JAVA命令中直接将其引号化,因为路径可能包含空格。

相关问题