我是java和编程的新手。尝试自己学习书籍和社区的帮助(谢谢!)。我确定存在某些东西,但我不确定如何处理我的问题。
这里有一些背景知识:我有一个在服务器上运行的Java应用程序并解析许多页面(超过20,000)。它需要几个小时,一旦失败,它有点难以排除故障。当它处理文件并将它们写入数据库时,我也将它写入文件,这样我就可以在失败之前看到它正在处理的最后一个条目。这有时很有用,但有时会失败,我不知道为什么(因为它适用于netbeans)。
所以我的问题......有没有办法让我在netbeans中运行应用程序时得到的错误堆栈?文件的输出只写我告诉它写的内容而不是错误堆栈。我尝试使用>运行cron作业error.txt并没有帮助。这是写入文件还是某个地方?我最终想要的是每天运行的作业,并通过电子邮件发送我创建的日志文件和失败时的java错误堆栈。
有什么想法吗?
答案 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);
}
}
从长远来看,我建议使用log4j或logback等日志记录系统(如果应用程序足够重要)