簡體   English   中英

如何使用FileHandler附加Java登錄

[英]how to append log in java using FileHandler

我正在嘗試使用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();
    }

}

當我需要將一些消息記錄到文件中時,我每次都調用該類。 它運行正常,但是每次調用它都會覆蓋舊的日志數據。 如何使用此代碼附加新日志? 還是還有其他記錄方式?

FileHandler還有另一個構造函數,可用於顯式告知FileHandler您要追加日志。 代碼是這樣的:

fh = new FileHandler(location, true);

將此構造函數的第二個參數設置為true以追加日志。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM