Log4j 记录日志的功能特别强大,我看过一些资料,一直都没有明白一个问题。
在那些资料上讲的,产生的日志都是通过debug , info ,warn ,error 等方法把指定的内容写进日志文件或者输出到控制台上。但是,如果程序在运行的时候产生了异常,由于异常的产生是定因素,怎么将这些异常信息写入日志呢?

解决方案 »

  1.   

    try {
    } catch (Exception e) {
    logger.error("出错啦",e)
    throw e;
    }
      

  2.   

    log.error(e.getMessage()); 将异常消息写入日志。
    或者:
    StackTraceElement[] stackInfos = e.getStackTrace();
    for(int i=0;i<stackInfos.length;i++){
       log.error(stackInfos[i].getClassName()+"."+stackInfos[i].getMethodName()......);
       //打印方法栈信息
    }
      

  3.   

    } catch (Exception e) {
        log.error("exception!", e);
    }直接把 e 塞进去,log4j 的参数中有参数为 Throwable 类型的,用于接收异常对象。
      

  4.   


    其实控制台的东西,都是在程序台中指定输出的。
    log4j只是提供了一个很好的输出format而已,同时保证了代码的工整性。
    既然是要输出异常信息,自然是要手工捕获异常了,然后将捕获到的异常,通过log4j的api输出到控制台中。
    即便你不使用log4j,使用printf输出也是同样的道理。所以楼上的方法是对的。