寻找Java的在线异常跟踪程序

寻找Java的在线异常跟踪程序,java,exception,logging,log4j,logback,Java,Exception,Logging,Log4j,Logback,有人知道类似于Java的东西吗 看起来有一些类似的东西(请参见捕获反馈),但不一样 在log4j/logback集成的理想情况下。为什么服务器端代码不打印到登录异常 以log4j为例?这似乎不需要第三方软件,我也不知道tracemycode是如何赚钱的 编辑: 我想我现在明白了,您需要一种读取本地应用程序创建的异常的方法。这有点冒险,因为任何网络通信都可能导致异常,导致无限递归,但只要您从报告中排除这些异常,您就应该可以了 这将很容易构建。您所需要做的就是生成一些helper类,在异常中调用该类

有人知道类似于Java的东西吗

看起来有一些类似的东西(请参见捕获反馈),但不一样


在log4j/logback集成的理想情况下。

为什么服务器端代码不打印到登录异常

以log4j为例?这似乎不需要第三方软件,我也不知道tracemycode是如何赚钱的

编辑:

我想我现在明白了,您需要一种读取本地应用程序创建的异常的方法。这有点冒险,因为任何网络通信都可能导致异常,导致无限递归,但只要您从报告中排除这些异常,您就应该可以了

这将很容易构建。您所需要做的就是生成一些helper类,在异常中调用该类以将日志发送到服务器

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,并将发送的数据保存到数据库或其他线程安全解决方案。

如果需要,您可以使用TraceMyCode,因为它在“帮助”部分清楚地记录了发送崩溃日志所需的端点和数据结构


想知道异常在哪些环境中出现的频率吗?是的,最好将其嵌入到自己的服务器端(基于servlet),但这不是我的观点。让我们想象一下,我们在K个不同的位置有N台服务器,等等。每个服务器上都会出现异常,并在本地进行日志记录。对我们来说,拥有一个单一的错误来源将是一个巨大的优势。