在记录器中打印为null的异常对象

时间:2015-02-02 13:33:52

标签: java exception exception-handling

我有一个必须捕获异常的方法。 制作中有错误 当我浏览日志文件时 我发现了一些奇怪的事 似乎有例外, 当我通过实现toString()搜索我打印异常对象的catch块时, 我发现该对象打印为null。 我找到了2或3个链接,但从来没有一个明确的答案。 以下是我的方法和记录器。

public void downloadFile() throws ServletException, IOException
{
    try{
        //some logic to download a  file
    }
    catch(Exception e) {
        setRetMessage("File cannot be download.");   
        PAYTFFileDebug.trace("Error in download >>>>>>>>> "+e.toString(),PAYTFFileDebug.LEVEL_5);
    }
}

下面是我发现不常见的日志。

Fri Jan 27 14:50:13 GMT+05:30 2015 : Level 5:Error in download >>>>>>>>> null

1 个答案:

答案 0 :(得分:2)

通常,您需要记录Exception的堆栈跟踪。我无法分辨您正在使用哪个底层日志框架,但大多数都允许您在消息之后传递Throwable。例如,在Log4J中我们有:

public void error(Object message,
     Throwable t)

如果您的日志记录框架支持它,您可以尝试:

PAYTFFileDebug.error("Error in download.", e);

这将确保您记录该异常的完整堆栈跟踪,然后可以更好地解决问题。