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!!它起作用了!!