0

1時間ごとにログファイルを作成して特定のフォルダに保存したい。アプローチ方法は?どんな例でも役に立ちます。

4

4 に答える 4

3

余分な労力は必要ありません。DailyRollingFileAppenderwhere setを使用Datepattern- '.'yyyy-MM-dd-HH-毎正時にロールオーバーします。

例 -

log4j.appender.LOGFILE = org.apache.log4j.DailyRollingFileAppender
log4j.appender.LOGFILE.DatePattern = '.'yyyy-MM-dd-HH
...

リファレンス - DailyRollingFileAppender

注 : DatePattern オプションのどこにもコロン「:」文字を使用しないでください。コロンの前のテキストは、URL のプロトコル仕様として解釈されますが、これはおそらくあなたが望むものではありません。

于 2013-02-17T06:29:53.340 に答える
0

ロガーAPI(log4j)を使用して、1時間ごとにログファイルを生成できます。

于 2013-02-17T06:28:28.943 に答える
0

そんな感じ :

public void run(){
    while(true){
        synchronize(this){
        if(timeLap==1hr)
            file.writeLine();
        }
        else
            Thread.sleep(1hour);
         }
         }

または、API http://www.vogella.com/articles/Logging/article.htmlを使用できます

于 2013-02-17T06:41:04.233 に答える
0

次のようなカスタム FileAppender を作成できます

public class TestFileAppender extends WriterAppender {
    String pattern;

    public void setFile(String file) {
        this.pattern = file;
    }

    public synchronized void update() {
        try {
            closeWriter();
            String folder = new SimpleDateFormat("yyyyMMddHH").format(new Date());
            File file = new File(String.format(pattern, folder));
            file.getParentFile().mkdirs();
            setWriter(new BufferedWriter(new FileWriter(file, true)));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

使ってください log4j config

log4j.appender.file = test.TestFileAppender
log4j.appender.file.file = xxx/%s/1.log
log4j.appender.file.layout = org.apache.log4j.SimpleLayout

FolderNameChanger を 1 時間に 1 回実行する

class FolderNameChanger extends TimerTask {

    FolderNameChanger() {
        run();
    }

    public void run() {
        Enumeration<Appender> e = Logger.getRootLogger().getAllAppenders();
        while (e.hasMoreElements()) {
            Appender a = e.nextElement();
            if (a instanceof TestFileAppender) {
                ((TestFileAppender) a).update();
            }
        }
    }
}

このタスクは、すべての TestFileAppenders を検索し、それらのパスを変更します

于 2013-02-17T08:15:43.330 に答える