2013-02-19 23 views

回答

1

爲什麼你的服務器端代碼只是打印到登錄異常?

以log4j爲例?似乎沒有必要需要第三方軟件來做到這一點,我不知道怎麼tracemycode賺錢

編輯:

我想我現在明白了,你想有一個方法來讀取從創建的異常本地應用。那麼這有點冒險,因爲任何網絡通信都可能導致異常,導致無限遞歸,但只要您從報告中排除這些異常,就應該沒問題。

這將很容易建立。你所需要做的就是生成一些助手類,在你的異常中調用它來將日誌發送到服務器。

public class ExceptionReporter { 

public static int sendReport(String aData) 
    try { 
     byte[] myData = aData.getBytes(); 
     /* Uploading the data */ 
     URL myURL = new URL(CONSTANTS.CentralURL); 
     HttpURLConnection myConnection = (HttpURLConnection) myURL.openConnection(); 
     myConnection.setDoOutput(true); 
     myConnection.setUseCaches(false); 
     myConnection.setDefaultUseCaches(false); 
     myConnection.setRequestProperty("Content-type", "application/octet-stream"); 
     OutputStream myOutputStream = myConnection.getOutputStream(); 
     myOutputStream.write(myData); 
     myOutputStream.flush(); 
     myOutputStream.close(); 

     int status = ((HttpURLConnection) myConnection).getResponseCode();  
    } 
    catch (Exception e) { 
     LocalLog.log(e.toString());  
    } 


} 

然後在所有的你的服務器代碼/應用程序代碼,您可以使用

try{ 
    // ...do stuff 
} 
catch (Exception e){ 
    ExceptionReporter.sendReport(e.getMessage()); 
} 

那麼你的中央服務器可以在這些httpconnections,並在數據發送保存到數據庫,或其他一些線程安全的解決方案。

+0

想知道異常是如何經常出現在其中的環境等是這將是很好的嵌入它自己(基於servlet),服務器端的,但是這不是一個我的觀點。假設我們在K個不同位置有N臺服務器等。每臺服務器上都會出現異常並在本地進行日誌記錄。單一來源的所有錯誤對我們來說都是非常有利的。 – FoxyBOA 2013-02-19 17:08:51

1

如果您需要,您可以使用TraceMyCode,因爲它明確記錄了幫助部分發送崩潰日誌所需的端點和數據結構。

http://tracemycode.net/help