我在Java应用程序中使用commons日志记录,并希望从堆栈跟踪中记录异常。
catch( IOException exception ) {
logger.error( "IOException Occured :", exception.fillInStackTrace() );
//Print the entire stack trace to log file.
throw new AsExceptionUtl( APPMessageHelper.getMessage( APPMessageConstants.ERROR_FailedLoadFile, documentPath ) );
}这条路对吗?它会打印日志中的堆栈跟踪吗?
发布于 2012-12-14 20:28:52
Apache commons logging解释说:在互联网上没有太多关于这方面的文档。这是一篇对你有益的小文章:
为了在java代码中记录消息,您需要在源代码中导入两个类。
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;现在,要创建日志,请使用以下两种方法之一在类中创建属性:
private Log m_log = LogFactory.getLog(MyClass.class);或
private Log m_log = LogFactory.getLog("MyClassLogger");第一个选项是为您的类创建一个通用日志记录器,它将由默认的日志记录选项控制。第二个选项是创建一个特定的记录器,您将其命名为‘MyClassLogger’,它可以单独控制为默认值。如果您使用其他使用日志记录的第三方源代码,但又不希望看到来自该源代码的调试或其他信息,则可能需要执行此操作。使用记录器非常简单。您可以通过调用优先级对应的方法发送日志消息:
m_log.fatal(Object message);
m_log.fatal(Object message, Throwable t);
m_log.error(Object message);
m_log.error(Object message, Throwable t);
m_log.warn(Object message);
m_log.warn(Object message, Throwable t);
m_log.info(Object message);
m_log.info(Object message, Throwable t);
m_log.debug(Object message);
m_log.debug(Object message, Throwable t);
m_log.trace(Object message);
m_log.trace(Object message, Throwable t);这些方法按照优先级从高到低的顺序列出。默认情况下,Commons日志设置为显示来自INFO或更高版本的所有消息。如你所见,每个方法都被一个方法重载,你可以在其中发送一个Throwable类型,比如一个异常--非常方便!这就是记录消息所要做的全部工作。
在您的示例中,您只需使用:
logger.error("IOException Occured :", exception); 不需要调用stackTrace,因为这里的异常对象将与抛出的异常一起记录。
https://stackoverflow.com/questions/13878456
复制相似问题