如何监控无头java进程?

时间:2011-04-28 17:44:38

标签: java java-ee cron crontab

我是java和编程的新手。尝试自己学习书籍和社区的帮助(谢谢!)。我确定存在某些东西,但我不确定如何处理我的问题。

这里有一些背景知识:我有一个在服务器上运行的Java应用程序并解析许多页面(超过20,000)。它需要几个小时,一旦失败,它有点难以排除故障。当它处理文件并将它们写入数据库时​​,我也将它写入文件,这样我就可以在失败之前看到它正在处理的最后一个条目。这有时很有用,但有时会失败,我不知道为什么(因为它适用于netbeans)。

所以我的问题......有没有办法让我在netbeans中运行应用程序时得到的错误堆栈?文件的输出只写我告诉它写的内容而不是错误堆栈。我尝试使用>运行cron作业error.txt并没有帮助。这是写入文件还是某个地方?我最终想要的是每天运行的作业,并通过电子邮件发送我创建的日志文件和失败时的java错误堆栈。

有什么想法吗?

4 个答案:

答案 0 :(得分:2)

我认为问题是你重定向stdout而不是stderr - 我相信例外发送到stderr和“>”重定向标准输出。

在bash中尝试“2>”重定向stderr。

答案 1 :(得分:1)

您是否查看了日志框架log4j

您可以在应用中启用日志记录。您也可以将所需内容记录到File

答案 2 :(得分:1)

您可以在程序中使用日志记录框架log4j日志语句,也可以在代码中使用Thread.dumpStackTrace()您认为会导致例外的地方。

答案 3 :(得分:1)

修改main方法以执行以下操作:

public static main (String[] args)
{
  try
  {
    //your code
  }catch(Exception e){
    e.printStackTrace(yourLoggingPrintStream);
  }
}

请参阅printStackTrace

从长远来看,我建议使用log4j或logback等日志记录系统(如果应用程序足够重要)

相关问题