1時間ごとにログファイルを作成して特定のフォルダに保存したい。アプローチ方法は?どんな例でも役に立ちます。
2387 次
4 に答える
3
余分な労力は必要ありません。DailyRollingFileAppender
where 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 に答える