java - 如何将错误或异常写入以日期命名的日志文件?
问题描述
我已经写了一个代码。但是我发现每次将错误写入日志文件时,它都会完全覆盖现有文件,而不是附加在它之后。发生了什么...
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);
}
解决方案
当一个PrintStream
带String
参数的新创建时,该参数被解释为一个新FileOutputStream
创建的路径。
所以句子:
PrintStream ps = new PrintStream("src/log/"+day+"_Exception.log");
基本上使用默认的“附加”标志创建一个新FileOutputStream
的,即false
.
要实现你想要的附加,你必须修改你的代码如下:
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);
}
推荐阅读
- javascript - 如何正确编写 JavaScript“for”循环?
- scala - 如何将 Java 构造函数转换为具有堆栈作为成员属性的 Scala 构造函数?
- python - 为什么这个加载 gif 文件的 kivy 代码在 python 3 中有效,而在 python 2 中无效?
- amazon-web-services - C++ Builder 10.3 Rio 亚马逊存储服务示例
- oracle - 结果集没有价值
- javascript - 网络应用程序 - 是否可以禁用 Windows+Printscreen?
- jquery - 如何为 jQuery Countdown 指定小时数
- php - 自动从 PHP 中的 URL 下载文件?
- python-3.x - BigQuery 不使用缓存结果
- angular - 使用带有 PrimeNG 芯片和自动完成功能的自定义对象