Throwable类的printStackTrace(PrintStream s)方法将此throwable及其信息输出到指定的输出流中,实际上printStackTrace()就是调用的printStackTrace(System.out),指定将信息输出到控制台上,所以我们可以通过System的setOut()方法,将异常信息输出到指定的文件中。
import java.io.*;
import java.util.*;
import java.text.*;
class ExceptionInfo
{
public static void main(String[] args)throws IOException
{
try
{
int[] arr = new int[2];
System.out.println(arr[3]);
}
catch (Exception e)
{
try
{
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s = sdf.format(d);
PrintStream ps = new PrintStream("exeception.log");
ps.println(s);
System.setOut(ps);
}
catch (IOException ex)
{
throw new RuntimeException("日志文件创建失败");
}
e.printStackTrace(System.out);
}
}
}
System的getProperties()方法,获取到当前的系统属性,返回Properties,是一个集合,这个集合与流相结合。Properties可保存在流中或从流中加载。属性列表中的每个键和值都是一个字符串。
Properties的list(PrintStream out) 方法,将属性列表输出到指定的输出流。
import java.util.*;
import java.io.*;
class SystemInfo
{
public static void main(String[] args) throws IOException
{
Properties prop = System.getProperties();
//System.out.println(prop);
prop.list(new PrintStream("sysinfo.txt"));
}
}