我已經創建了一個應用程序並將其導出爲jar文件。如何讓我的jar應用程序生成崩潰日誌文件?
如果JAR-應用程序崩潰由於某種原因,我希望它產生與錯誤崩潰日誌文本文件。
如果我在Eclipse中運行應用程序,然後日食總是告訴我在哪裏崩潰,我可以得到同樣的消息在一個文本文件,而不是運行應用程序作爲一個罐子的時候?
我運行鍵入這是我的jar文件: Java的罐子MyApplication.jar
我可以爲了補充一下這個命令生成崩潰日誌如果發生碰撞?
謝謝!
我已經創建了一個應用程序並將其導出爲jar文件。如何讓我的jar應用程序生成崩潰日誌文件?
如果JAR-應用程序崩潰由於某種原因,我希望它產生與錯誤崩潰日誌文本文件。
如果我在Eclipse中運行應用程序,然後日食總是告訴我在哪裏崩潰,我可以得到同樣的消息在一個文本文件,而不是運行應用程序作爲一個罐子的時候?
我運行鍵入這是我的jar文件: Java的罐子MyApplication.jar
我可以爲了補充一下這個命令生成崩潰日誌如果發生碰撞?
謝謝!
我用這個最後,解決方案ich的工作方式就像我想要的一樣。 每當應用程序崩潰時,它將異常保存在名爲「crashlogs」的子文件夾中的文本文件中,日期和時間作爲文件名。
在我的主要功能
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread t, Throwable e) {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
String filename = "crashlogs/"+sdf.format(cal.getTime())+".txt";
PrintStream writer;
try {
writer = new PrintStream(filename, "UTF-8");
writer.println(e.getClass() + ": " + e.getMessage());
for (int i = 0; i < e.getStackTrace().length; i++) {
writer.println(e.getStackTrace()[i].toString());
}
} catch (FileNotFoundException | UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
你可以使用日誌框架一樣log4j
簡單的例子 的Java
import org.apache.log4j.Logger;
import java.io.*;
import java.sql.SQLException;
import java.util.*;
public class log4jExample{
/* Get actual class name to be printed on */
static Logger log = Logger.getLogger(
log4jExample.class.getName());
public static void main(String[] args)
throws IOException,SQLException{
log.debug("Hello this is an debug message");
log.info("Hello this is an info message");
}
}
log4j.properties
# Define the root logger with appender file
log = /usr/home/log4j
log4j.rootLogger = DEBUG, FILE
# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${log}/log.out
# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n
如果你想這樣做without loging
您可以使用日誌框架開始就添加該代碼。閱讀此問題http://stackoverflow.com/questions/2533614/what-are-the-latest-options-in-java-logging-frameworks – lakshman
是的,你可以重定向日誌在你選擇的特定驅動器(或位置) 。 – Ashish
@lakshman是否有另一種記錄崩潰的方法,而無需添加任何可能會崩潰的嘗試和catch檢查? – Skullbox