如何使用FileHandler在java中追加日志

时间:2015-02-05 20:27:46

标签: java log4j

我正在尝试使用log4j

将日志存储到文件中

我试图创建一个单独的类

public class MyLogger {

    FileHandler fh;
    Logger log;

    public MyLogger(String className) {
        log = Logger.getLogger(className);
        try {
            String location = this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath().replace("%20", " ").replaceFirst("/", "") + "logs.log";
            fh = new FileHandler(location);
            log.addHandler(fh);
            SimpleFormatter formatter = new SimpleFormatter();
            fh.setFormatter(formatter);
        } catch (Exception e) {
            System.out.println("error in MyLogger class, method getLogger \n stack trace below \n");
            e.printStackTrace();
        }
    }

    public void log(Level l, String Message, Object o) {
        log.log(l, Message, o);
        flushStream();
    }

    public void log(Level l, String Message) {
        log.log(l, Message);
        flushStream();
    }

    private void flushStream() {
        fh.flush();
        fh.close();
    }

}

我每次都在调用这个类,当我需要将一些消息记录到文件中时。 它运行正常,但每次调用时都会覆盖旧的日志数据。 如何使用此代码附加新日志?或者还有其他任何记录方式吗?

1 个答案:

答案 0 :(得分:0)

FileHandler还有另一个构造函数可用于明确告诉FileHandler您想要 追加 日志。代码是这样的:

fh = new FileHandler(location, true);

将此构造函数的第二个参数设置为 true 以附加日志。