Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有log4j的Java_Java_Log4j - Fatal编程技术网

带有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我做了一个可能有用的编辑。但如果没有“调试”输出,那么记录器就不会记录调试输出,您需要修复配置。