gpt4 book ai didi

java - 如何将错误或异常写入以日期命名的日志文件中?

转载 作者:行者123 更新时间:2023-12-01 19:44:54 25 4
gpt4 key购买 nike

我写了一段代码。但我发现每次将错误写入日志文件时,它都会完全覆盖现有文件,而不是追加到它后面。发生了什么事...

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");

本质上是使用默认的“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);
}

关于java - 如何将错误或异常写入以日期命名的日志文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59133610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com