2013-06-22 3 views
0

как распечатать трассировку стека исключений на веб-страницу?Как распечатать трассировку стека на страницы?

import com.opensymphony.xwork2.ActionSupport; 
import java.util.Arrays; 

public class ExceptionAction extends ActionSupport 
{ 

public String execute() 
{  
    // 
    String errMsg = Arrays.toString(Thread.currentThread().getStackTrace()); 

    this.addActionError(
        "Unexcepted error has occurred. \n" 
        +errMsg 
        + "\nPlease try again or report this error to administrator or support team. \n "); 

    return "error"; 
} 

/** 
* 
*/ 
private static final long serialVersionUID = -3754090784536811052L; 
} 

, но я получил бесполезное использование Сообщ выше кодов, сообщ, как это:

[java.lang.Thread.getStackTrace(Thread.java:1479), com.monitoring.action.ExceptionAction.execute(ExceptionAction.java:11), sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method), sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39), 
+1

на страницы, которые вы имели в виду, чтобы iWork Pages? или на веб-страницу? – Raptor

+0

Попробуйте бросить исключение, где это произошло, все трассировки должны быть на веб-странице, но я не думаю, что это может помочь вам в вашей проблеме. –

+0

В общем, вы * не * хотите печатать трассировки стека на веб-страницах. Он может выявить много и * помощь * люди получают доступ к вашим серверам без вашего согласия :) – devnull

ответ

0

Вот код для печати трассировка стека на страницу

package test;  
import java.io.IOException; 
import java.io.PrintWriter; 
import java.io.StringWriter; 

import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class TestServlet extends HttpServlet { 

    private static final long serialVersionUID = 1L; 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { 

     PrintWriter out = response.getWriter(); 
     try { 
      "test".charAt(20); 
     } catch (RuntimeException e) { 
      out.println("Stack Trace:<br/>"); 
      e.printStackTrace(out); 
      out.println("<br/><br/>Stack Trace (for web display):</br>"); 
      out.println(displayErrorForWeb(e)); 
     } 
    } 

    public String displayErrorForWeb(Throwable t) { 
     StringWriter sw = new StringWriter(); 
     PrintWriter pw = new PrintWriter(sw); 
     t.printStackTrace(pw); 
     String stackTrace = sw.toString(); 
     return stackTrace.replace(System.getProperty("line.separator"), "<br/>\n"); 
    } 

} 

Источник: