Java kill-QUIT:日志未追加

Java kill-QUIT:日志未追加,java,log4j,monitoring,kill-process,Java,Log4j,Monitoring,Kill Process,我有一个Java进程。我使用log4j记录日志。我在log4j.xml中指定了日志文件的位置和名称。日志记录工作正常。我对这里的kill-3日志有问题 我试图使用kill-QUIT/kill-3获取进程转储。我希望kill-3生成的转储在log4j.xml中指定的日志文件中得到更新 但事实并非如此。我需要转储以查看线程状态。我不知道任何其他方法来获取正在运行的进程的进程转储 我需要转储以查看线程状态。我不知道任何其他方法来获取正在运行的进程的进程转储 您可以使用它。kill-3应该输出到stdo

我有一个Java进程。我使用
log4j
记录日志。我在
log4j.xml
中指定了日志文件的位置和名称。日志记录工作正常。我对这里的
kill-3
日志有问题

我试图使用
kill-QUIT/kill-3
获取进程转储。我希望
kill-3
生成的转储在
log4j.xml
中指定的日志文件中得到更新

但事实并非如此。我需要转储以查看线程状态。我不知道任何其他方法来获取正在运行的进程的进程转储

我需要转储以查看线程状态。我不知道任何其他方法来获取正在运行的进程的进程转储


您可以使用它。

kill-3应该输出到stdout,所以它应该在stdout去的任何地方。如果没有,您可以尝试使用
-XX:LogFile
JVM选项

另一种方法是NPE建议的
jstack


另一种选择是使用
jvisualvm
——它将在其漂亮的GUI中生成stackdump,您可以从那里复制它。

感谢您的输入。我只是稍微看看jStack。您是否指出:@SaurabhV是的,但是jvisualvm也是oraclejdk的一部分,不确定使用缓冲的icedtea/openjdkNot。我没有明确说明。我不知道log4j在默认情况下如何处理刷新。另外,您所指向的链接会通知关闭时刷新日志。在这里,我一点也不想扼杀这个过程。我只是使用kill-QUIT来获得线程dumo。@Oleg:我明白为什么会发生这种情况。仅使用logger对象将语句记录到配置文件。Rest所有内容都重定向到标准输出。Kill-QUIT转储也被重定向到stdout.get线程转储。如何分析。你能参考一些链接吗?