用logger 输出printStackTrace()

public class HelloLog4jChild extends HelloLog4j {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		logger.debug("This is debug message!");
		logger.info("This is info message!");
		logger.error("This is error message!");
		HelloLog4jChild object = new HelloLog4jChild();
		try {
			object.testMethod();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			//e.printStackTrace();
			logger.error("HelloLog4jException", e);
		}
	}

	public void testMethod() throws Exception {
		try {
			testMethod2();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			// e.printStackTrace();
			throw new ClassNotFoundException("test1 Exception", e);
		}

	}

	public void testMethod2() throws Exception {

		throw new ClassNotFoundException("test2 Exception");
	}

}

使用logger.error("ExceptionName",e),可以很轻松的将printStackTrace()输出到log文件中(printStackTrace()是将错误的堆栈信息输出到Console中)。

引用
[11/07/27 13:18:58:812][com.zsk.log4j.demo1.HelloLog4jChild-main] This is info message!
[11/07/27 13:18:58:828][com.zsk.log4j.demo1.HelloLog4jChild-main] This is error message!
[11/07/27 13:18:58:828][com.zsk.log4j.demo1.HelloLog4jChild-main] HelloLog4jException
java.lang.ClassNotFoundException: test1 Exception
at com.zsk.log4j.demo1.HelloLog4jChild.testMethod(HelloLog4jChild.java:29)
at com.zsk.log4j.demo1.HelloLog4jChild.main(HelloLog4jChild.java:15)
Caused by:
java.lang.ClassNotFoundException: test2 Exception
at com.zsk.log4j.demo1.HelloLog4jChild.testMethod2(HelloLog4jChild.java:36)
at com.zsk.log4j.demo1.HelloLog4jChild.testMethod(HelloLog4jChild.java:25)
... 1 more

注意Caused by:是不同层级的Exception所产生的
throw new ClassNotFoundException("test1 Exception", e);

猜你喜欢

转载自zsk-china.iteye.com/blog/1133918
今日推荐