使用html / css设置异常堆栈跟踪样式的Java库

时间:2012-04-30 08:58:53

标签: java html

我正在将异常的主体转换为字符串,然后将该异常通过电子邮件发送到java中的给定地址。我想用html格式化我的异常字符串,使其成为一种人类可读的格式,类似于它在堆栈溢出时的显示方式。我想知道Java中是否有任何库可以做到这一点?

StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter);
t.printStackTrace(printWriter);
String body = stringWriter.toString();
//add html to body here
setMessageBody(body);

要详细说明,我的意思是将行与<br/>分开,使用不同颜色的字体显示类名称,使用不同颜色的字体显示行号。这可以通过一些正则表达式完成,但我想知道是否有一个开箱即用的库。

3 个答案:

答案 0 :(得分:6)

它没有颜色,但一个非常简单的方法是将堆栈跟踪包装在HTML <pre>元素中。这将至少保留空格和新线。

例如

<pre>
java.lang.ClassCastException: java.lang.Double cannot be cast to java.math.BigDecimal
        at org.hibernate.type.descriptor.java.BigDecimalTypeDescriptor.unwrap(BigDecimalTypeDescriptor.java:36)
        at org.hibernate.type.descriptor.sql.DecimalTypeDescriptor$1.doBind(DecimalTypeDescriptor.java:65)
        at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:90)
        at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:286)
</pre>

答案 1 :(得分:1)

是的,有一对,他们甚至带有“免费”邮件后端:使用像slf4jlog4j这样的Java日志框架。

所有这些框架都可以生成带有一些配置的HTML电子邮件。一般方法是这样的:

  • 为每个类创建一个记录器或一个记录器。前者更容易配置,后者为您提供更多自由
  • 在此记录器中添加一个appender,配置为发送电子邮件

如果您不想在应用程序中使用日志记录,则可以编写自己的appender,重用现有的格式化程序。

答案 2 :(得分:0)

我写了这个,https://github.com/StefanLiebenberg/html-exception-formatter

它是一个简单的实用程序,可将异常格式化为可读的html。

String html = new HtmlExceptionFormatter().toString(exception);