Log4j RollingFileAppender的正常行爲是在第一個日誌消息發生在不同日期時滾動,但即使沒有任何事件發生,但某些日誌文件對於每個日期都會變得溫暖和模糊。有沒有辦法強制它在午夜後滾動而不寫虛擬消息到日誌?乾淨地強制Log4j RollingFileAppender在午夜後不久滾動?
3
A
回答
4
我已經仔細查看了這段代碼 - 簡單的答案是'不'。翻轉是作爲Appender上的doAppend()流的一部分觸發的 - 觸發它的唯一方法是記錄一些內容。
你可以用cron來僞造這個:只需要一個cron腳本在明天11:58就可以觸摸這個文件。這會讓你找到你正在尋找的空白日誌文件行爲。
下面是實現翻轉功能代碼:
void rollOver() throws IOException {
/* Compute filename, but only if datePattern is specified */
if (datePattern == null) {
errorHandler.error("Missing DatePattern option in rollOver().");
return;
}
String datedFilename = fileName+sdf.format(now);
// It is too early to roll over because we are still within the
// bounds of the current interval. Rollover will occur once the
// next interval is reached.
if (scheduledFilename.equals(datedFilename)) {
return;
}
// close current file, and rename it to datedFilename
this.closeFile();
File target = new File(scheduledFilename);
if (target.exists()) {
target.delete();
}
File file = new File(fileName);
boolean result = file.renameTo(target);
if(result) {
LogLog.debug(fileName +" -> "+ scheduledFilename);
} else {
LogLog.error("Failed to rename ["+fileName+"] to ["+scheduledFilename+"].");
}
try {
// This will also close the file. This is OK since multiple
// close operations are safe.
this.setFile(fileName, false, this.bufferedIO, this.bufferSize);
}
catch(IOException e) {
errorHandler.error("setFile("+fileName+", false) call failed.");
}
scheduledFilename = datedFilename;
}
+2
如果您可以訪問appender,也可以調用RollingFileAppender.rollOver。 – 2010-11-09 14:14:36
+0
當日志不存在時調用rollover()將不會得到提交者所需的內容:正確日期和時間的空日誌文件。 – 2010-11-10 01:38:54
相關問題
- 1. 強制Log4Net RollingFileAppender滾動
- 2. Log4j RollingFileAppender在Linux上滾動,但在Windows上不滾動
- 3. 在午夜強制jwt令牌過期
- 4. 午夜後不啓動計時器
- 5. Log4J:如何在午夜後保留日誌文件
- 6. cron在午夜之前到午夜之後
- 7. 如何在午夜前或午夜後學習mytime?
- 8. 午夜之後更新BackContent
- 9. DateTime在午夜不顯示
- 10. SQL搜索午夜到午夜
- 11. RollingFileAppender,它滾動後,它不會追加
- 12. 午夜後刪除JS cookie
- 13. 結合強制WWW與乾淨的URL
- 14. Java定時器在午夜之後不會啓動
- 15. 在log4j中使用RollingFileAppender滾動日誌文件
- 16. 後在午夜時間的PostgreSQL
- 17. Log4j RollingFileAppender每分鐘
- 18. 在log4j中配置RollingFileAppender
- 19. 在log4j中使用FileNamePattern,RollingFileAppender
- 20. NSDate午夜後的第二天
- 21. 升壓記錄不會在午夜
- 22. 處理時間和午夜後
- 23. 拉起午夜後的數據
- 24. 乾淨的方式來滾動div divs當滾動
- 25. log4j rollingfileappender文件丟失
- 26. RollingFileAppender - log4j,MaxBackUpIndex未生效
- 27. Log4j的RollingFileAppender進行工作不正常
- 28. 乾淨的方式強制morphia覆蓋現有的條目
- 29. Datenum錯誤時午夜0
我的猜測是,這是不是默認的行爲,因爲這需要某種形式的計時器線程,其中將要求您的應用程序在後臺運行不斷運行。這不是log4j強加的限制。 – Pace 2010-11-02 23:09:38