输入列表值 - a,b,c,d
这是我在循环中执行jar文件的bash脚本:
cd /myjarfilepath
for input in $list
do
java -Xmx1024m -cp myApp.jar com.CommandLineRunner $input
done
当我使用输入" a"执行myApp.jar时 - 它因空指针异常而失败,并继续执行下一个输入" b"。在这里,我想记录" a"的空指针异常。在进入" b"。
之前我尝试使用下面的代码获取退出状态,但它始终为0,即使进程包含异常。
my_status=$?
echo The exit status of the process was $my_status
任何帮助将不胜感激。 感谢。
答案 0 :(得分:0)
您应该将stderr
重定向到您的日志文件:
java -Xmx1024m -cp myApp.jar com.CommandLineRunner $input 2>> all.log
或者您可以为每个输入文件创建单独的日志:
java -Xmx1024m -cp myApp.jar com.CommandLineRunner $input 2> ${input}.log
注意:这只会将stderr
重定向到文件。 stdout
仍然会打印到终端。
答案 1 :(得分:0)
最简单的方法是将stderr重定向到日志文件,比如'/tmp/myjar.log'
cd /myjarfilepath
LOG="/tmp/myjar.log"
for input in $list
do
echo "processing $input" > $LOG
java -Xmx1024m -cp myApp.jar com.CommandLineRunner $input 2>$LOG
done
答案 2 :(得分:0)
java -Xmx1024m -cp myApp.jar com.CommandLineRunner $input 1
我确实将stdout重定向到了一个日志文件。这样就可以将stderr打印到终端了。
整个过程我通过jenkins工作来运行它。因此,终端中打印的错误日志可以作为构建日志文件收集并附在电子邮件中。