Java 如何将错误或异常写入以日期命名的日志文件?
我已经写了一个代码。但我发现每次它将错误写入日志文件时,它都会完全覆盖现有的文件,而不是附加在它之后。发生了什么事Java 如何将错误或异常写入以日期命名的日志文件?,java,Java,我已经写了一个代码。但我发现每次它将错误写入日志文件时,它都会完全覆盖现有的文件,而不是附加在它之后。发生了什么事 try { int s = 1 / 0; } catch (Exception e) { try { Date d = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd
try {
int s = 1 / 0;
} catch (Exception e) {
try {
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat sd = new SimpleDateFormat("yyyy_MM_dd");
String s = sdf.format(d);
String day = sd.format(d);
PrintStream ps = new PrintStream("src/log/"+day+"_Exception.log");
ps.println(s);
System.setErr(ps);
} catch (Exception e2) {
}
e.printStackTrace(System.err);
}
创建带有
String
参数的新PrintStream
时,该参数被解释为要创建的新FileOutputStream
的路径
因此,这句话:
PrintStream ps = new PrintStream("src/log/"+day+"_Exception.log");
b使用默认的“append”标志(即false
)手动创建一个新的FileOutputStream
)
要实现所需的附加,必须按如下方式修改代码:
try {
int s = 1 / 0;
} catch (Exception e) {
try {
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat sd = new SimpleDateFormat("yyyy_MM_dd");
String s = sdf.format(d);
String day = sd.format(d);
FileOutputStream fos = new FileOutputStream("src/log/" + day + "_Exception.log");
PrintStream ps = new PrintStream(fos);
ps.println(s);
System.setErr(ps);
} catch (Exception e2) {
}
e.printStackTrace(System.err);
}
读取javadocs文件—用作此打印流目标的文件。如果文件存在,那么它将被截断为零大小;否则,将创建一个新文件。
PrintStream ps=new PrintStream(“src/log/”+day+“\u Exception.log”,true)代码>将允许在现有文件中追加内容。@SudhirOjha感谢您的评论…但它仍然不起作用。。。IDEA报告“无法解析构造函数的PrintStream(java.lang.String,boolean)”。顺便说一句,这是使用JDK8。哦,谢谢你,Andrea Annibali!!它起作用了!!