带有log4j的Java
我有一个抛出异常的代码,我可以在控制台上打印堆栈跟踪,也可以在日志文件中打印,但我希望它只打印在日志文件上,而不打印在控制台上带有log4j的Java,java,log4j,Java,Log4j,我有一个抛出异常的代码,我可以在控制台上打印堆栈跟踪,也可以在日志文件中打印,但我希望它只打印在日志文件上,而不打印在控制台上 try { ///some code here } catch(Exception e) { logger.error("Error", e.fillInStackTrace()); } try块抛出一些异常,我正在使用log4J.jar fie将其记录在日志文件中 我尝试只打印异常对象,但它无法打
try
{
///some code here
}
catch(Exception e)
{
logger.error("Error", e.fillInStackTrace());
}
try块抛出一些异常,我正在使用log4J.jar fie将其记录在日志文件中
我尝试只打印异常对象,但它无法打印整个堆栈跟踪。请帮助我解决此问题。您只需在日志调用中传递异常,如:
try {
///some code here
} catch(Exception e) {
logger.error("Error", e);
} // ^
您只需在日志调用中传递异常-如中所示:
try {
///some code here
} catch(Exception e) {
logger.error("Error", e);
} // ^
您可以尝试使用getStackTrace()获取StackTraceElement数组,并从中生成所需的字符串
但是,如果“…它不打印整个堆栈跟踪…”是指在查看带有“由”子句的堆栈跟踪时的“…n more”行,请查看以下答案:您可以尝试使用getStackTrace()获取StackTraceeElement数组,并从中构建所需的字符串
但是,如果说“…它不打印整个堆栈跟踪…”是指在查看带有“起因”子句的堆栈跟踪时的“…n more”行,请查看以下答案:我们认为明智的做法是,以信息级别或更高级别记录的任何内容都将打印到控制台。如果不希望将某些内容打印到控制台,请使用跟踪或调试 例如,您可以尝试:
try
{
// some code here
}
catch(Exception e)
{
logger.error(e);
// or maybe logger.error("descriptive message: " + e);
logger.debug("Additional info on error", e);
// if that fails you could try:
StringWriter strWriter = new StringWriter();
e.printStackTrace(new PrintWriter(strWriter));
logger.debug("Additional info on error", strWriter.toString());
// or, I can't remember if you said fill in stack trace worked.
// The point is that you should use debug to log the stack trace
// as the information is to help you debug and isn't otherwise
// useful information
logger.debug("Additional info on error", e.fillInStackTrace());
}
我添加了一个修复程序,因此应该打印堆栈跟踪。它有点笨重,但由于异常很少,因此不应该给程序增加任何可观的开销。明智的做法是,任何记录在信息级别或更高级别的内容都将打印到控制台。如果不希望将某些内容打印到控制台,请使用跟踪或调试 例如,您可以尝试:
try
{
// some code here
}
catch(Exception e)
{
logger.error(e);
// or maybe logger.error("descriptive message: " + e);
logger.debug("Additional info on error", e);
// if that fails you could try:
StringWriter strWriter = new StringWriter();
e.printStackTrace(new PrintWriter(strWriter));
logger.debug("Additional info on error", strWriter.toString());
// or, I can't remember if you said fill in stack trace worked.
// The point is that you should use debug to log the stack trace
// as the information is to help you debug and isn't otherwise
// useful information
logger.debug("Additional info on error", e.fillInStackTrace());
}
我添加了一个修复程序,因此应该打印堆栈跟踪。它有点笨重,但由于异常是罕见的,因此不应该给程序增加任何可观的开销。感谢您的回复,它不会打印整个堆栈,只打印异常的名称,例如:空指针异常等,,感谢回复,它没有打印整个堆栈,只是打印异常的名称,例如:空指针异常等,它没有在日志文件中打印整个堆栈,只是打印[2012-03-15 14:52:31046][INFO][http-0.0.0-8080-3][exampleservice.java:500]-错误:Exceptoinname@vijayakumar我做了一个可能有用的编辑。但如果没有“调试”输出,则记录器不会记录调试输出,您需要修复配置。它不会在日志文件中打印整个堆栈,它只是打印[2012-03-15 14:52:31046][INFO][http-0.0.0-8080-3][exampleservice.java:500]-错误:Exceptoinname@vijayakumar我做了一个可能有用的编辑。但如果没有“调试”输出,那么记录器就不会记录调试输出,您需要修复配置。