Aaron,

How about the following code?


    public String convertStackTraceToString(Throwable t){
        StringWriter stringWriter = new StringWriter();
        t.printStackTrace(new PrintWriter(stringWriter));
        return stringWriter.toString();
    }

instead of

>    /**
>     * Converts the Throwable.getStackTrace to a String representation for
> logging. This method
>     *   tries create a String that imitates the Throwable.printStackTrace
> as much as possible.
>     * @param throwable The Throwable exception.
>     * @param stackTrace An array of stack trace elements.
>     * @return A String containing the StackTrace.
>     */
>    public String convertStackTraceToString(Throwable throwable,
> StackTraceElement[] stackTrace) {
>      StringBuffer stackTraceStringBuffer = new StringBuffer();
>      stackTraceStringBuffer.append(throwable);
>      for (int i = 0; i < stackTrace.length; i++) {
>        StackTraceElement element = stackTrace[i];
>        stackTraceStringBuffer.append("\n at " + element.toString());
>      }
>      return stackTraceStringBuffer.toString();
>    }

Cheers,

Takuya

On Tue, 10 May 2005 19:26:14 -1000
Aaron Kagawa <[EMAIL PROTECTED]> wrote:

> Hey Guys,
>
> In trying to figure out the error in DailyProjectUnitTest, I thought it
> would be a good idea to log the stack trace. We've talked about this issue
> a couple of weeks ago in a code review. The problem is that we all like to
> use Throwable.printStackTrace because it provides detailed information
> about the exception. However, the printStackTrace prints only to console
> and not to the log. To log the stack trace we would have to use the
> Throwable.getStackTrace, but that is a little hard to deal with.
>
> I've came up with this simple solution. Does this implementation satisfy
> other developers' needs?
>
>    /**
>     * Converts the Throwable.getStackTrace to a String representation for
> logging. This method
>     *   tries create a String that imitates the Throwable.printStackTrace
> as much as possible.
>     * @param throwable The Throwable exception.
>     * @param stackTrace An array of stack trace elements.
>     * @return A String containing the StackTrace.
>     */
>    public String convertStackTraceToString(Throwable throwable,
> StackTraceElement[] stackTrace) {
>      StringBuffer stackTraceStringBuffer = new StringBuffer();
>      stackTraceStringBuffer.append(throwable);
>      for (int i = 0; i < stackTrace.length; i++) {
>        StackTraceElement element = stackTrace[i];
>        stackTraceStringBuffer.append("\n at " + element.toString());
>      }
>      return stackTraceStringBuffer.toString();
>    }
>
> Clients should do something like:
>
>      String stackTrace = serverProperties.convertStackTraceToString(e,
> e.getStackTrace());
>      logger.info(stackTrace);
>
> thanks, aaron



================================
Takuya Yamashita
E-mail: [EMAIL PROTECTED]
================================

Reply via email to