2014-01-13 76 views
2

我已經創建了一個應用程序並將其導出爲jar文件。如何讓我的jar應用程序生成崩潰日誌文件?

如果JAR-應用程序崩潰由於某種原因,我希望它產生與錯誤崩潰日誌文本文件。

如果我在Eclipse中運行應用程序,然後日食總是告訴我在哪裏崩潰,我可以得到同樣的消息在一個文本文件,而不是運行應用程序作爲一個罐子的時候?

我運行鍵入這是我的jar文件: Java的罐子MyApplication.jar

我可以爲了補充一下這個命令生成崩潰日誌如果發生碰撞?

謝謝!

+0

您可以使用日誌框架開始就添加該代碼。閱讀此問題http://stackoverflow.com/questions/2533614/what-are-the-latest-options-in-java-logging-frameworks – lakshman

+0

是的,你可以重定向日誌在你選擇的特定驅動器(或位置) 。 – Ashish

+0

@lakshman是否有另一種記錄崩潰的方法,而無需添加任何可能會崩潰的嘗試和catch檢查? – Skullbox

回答

4

我用這個最後,解決方案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(); 
     } 

    } 
}); 
0

你可以使用日誌框架一樣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

相關問題