我正在将异常的主体转换为字符串,然后将该异常通过电子邮件发送到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/>
分开,使用不同颜色的字体显示类名称,使用不同颜色的字体显示行号。这可以通过一些正则表达式完成,但我想知道是否有一个开箱即用的库。
答案 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)
是的,有一对,他们甚至带有“免费”邮件后端:使用像slf4j或log4j这样的Java日志框架。
所有这些框架都可以生成带有一些配置的HTML电子邮件。一般方法是这样的:
如果您不想在应用程序中使用日志记录,则可以编写自己的appender,重用现有的格式化程序。
答案 2 :(得分:0)
我写了这个,https://github.com/StefanLiebenberg/html-exception-formatter
它是一个简单的实用程序,可将异常格式化为可读的html。
String html = new HtmlExceptionFormatter().toString(exception);