1.今天学习了用Log4J记录异常日志信息
代码目的:
* 演示异常与记录日志的使用。
* java.util.logging工具将输出记录到日志中。
* 日志消息被转发到已注册的 Handler 对象,
* 该对象可以将消息转发到各种目的地,包括控制台、文件、OS 日志等等。
* 静态的Logger.getLogger方法创建了一个String参数相关联的Logger对象,通常与错误相关
* 的包名和类名,这个Logger对象会将其输出发送到System.err。向Logger写入
* 的最简单的方式就是直接调用与日志记录消息级别相关联的方法。
*
* 为了产生日志记录字符串,我们要获取异常抛出处的栈轨迹,但是printStackTrace不会默认的产生
* 字符串。为了获取字符串,我们需要使用重载的printStackTrace()方法,它接受一个java.io.PrintWriter
* 对象作为参数,通过调用toString方法,就可以把输出抽取为一个String。
*
* */
-
//: exceptions/LoggingExceptions.java
-
// An exception that reports through a Logger.
-
import java.util.logging.*;
-
import java.io.*;
-
-
class LoggingException extends Exception {
-
private static Logger logger =
-
Logger.getLogger("LoggingException");
-
public LoggingException() {
-
StringWriter trace = new StringWriter();
-
//printStackTrace(PrintWriter)将此Throwable及其追踪输出到指定的PrintWriter
-
printStackTrace(new PrintWriter(trace));
-
logger.severe(trace.toString());
-
//logger.info(trace.toString());
-
}
-
}
-
-
public class LoggingExceptions {
-
public static void main(String[] args) {
-
try {
-
throw new LoggingException();
-
} catch(LoggingException e) {
-
System.err.println("Caught " + e);
-
}
-
try {
-
throw new LoggingException();
-
} catch(LoggingException e) {
-
System.err.println("Caught " + e);
-
}
-
}
-
} /* Output: (85% match)
-
Aug 30, 2005 4:02:31 PM LoggingException <init>
-
SEVERE: LoggingException
-
at LoggingExceptions.main(LoggingExceptions.java:19)
-
-
Caught LoggingException
-
Aug 30, 2005 4:02:31 PM LoggingException <init>
-
SEVERE: LoggingException
-
at LoggingExceptions.main(LoggingExceptions.java:24)
-
-
Caught LoggingException
-
*///:~2.没有遇到问题3.明天打算学习类的继承和多态