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

Exception object printed as null in the logger

我有一个必须捕获异常的方法。 生产中存在错误,并且 当我浏览日志文件时 我发现了一些奇怪的事情。 似乎有一个例外, 当我通过实现 toString() 搜索打印异常对象的 catch 块时, 我发现该对象打印为空。 我找到了 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

通常您会想要记录异常的堆栈跟踪。我无法判断您使用的是哪个底层日志记录框架,但大多数都允许您在消息后传递 Throwable。例如在 Log4J 中我们有:

public void error(Object message,
     Throwable t)

如果你的日志框架支持,你可以试试:

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

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