zoukankan      html  css  js  c++  java
  • log4j打印抛出异常时堆栈内容

    JAVA 中为快速定位,抛出异常的位置。往往需要在日志中描述。

    log.err("异常出错点", e); 会将出错时的堆栈信息显示出来。

    package com.jqyc.jase;

    import static org.junit.Assert.*;

    import org.apache.log4j.Logger;
    import org.junit.Test;

    public class TestError {

    Logger log = Logger.getLogger(TestError.class);

    @Test
    public void test() {
    String s = null;
    try {
    s.length();
    } catch (Exception e) {
    log.error( "出错日志"+s, e);
    // 当然如果你懒得想提示信息的话,直接这样log.error("", e);

    System.out.println(e.getMessage());
    }
    }

    }
    [com.jqyc.jase.TestError.test(TestError.java:18)] - 出错日志null
    java.lang.NullPointerException
    at com.jqyc.jase.TestError.test(TestError.java:16)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
    printStackTrace()方法的意思是:在命令行打印异常信息在程序中出错的位置及原因。  但只会在标准输出stdout 与stderr中进行输出,无法将内容输出到日志。
    需要日志中进行输出,直接打印e对象。

  • 相关阅读:
    学习ActiveMQ(五):activemq的五种消息类型和三种监听器类型
    学习ActiveMQ(三):发布/订阅模式(topic)演示
    学习ActiveMQ(二):点对点(队列)模式消息演示
    Linux系统基础优化及常用命令
    【原创】Access自动编号的初始值设置及重置编号
    【整理】引用类型与ref传递实例精解
    【原创】数据库操作类库整理
    【摘录】Random快速产生相同随机数的原因及解决方案
    【整理】辗转相除法求最大公约数算法证明
    【转载】access采用sql语句与msql的区别
  • 原文地址:https://www.cnblogs.com/maohuidong/p/11757408.html
Copyright © 2011-2022 走看看