[英]How to output long line with FileHandler?
對於不太長的行, FileHandler
可以正常工作。 但如果該行相當長,它不會向日志文件寫入任何內容。 例如,這里是嘗試寫入一行 50k 個字符的代碼:
public class LoggerExample {
private static final Logger LOGGER = Logger.getLogger(LoggerExample.class.getName());
public static void main(String[] args) throws SecurityException, IOException {
FileHandler fileHandler = new FileHandler();
fileHandler.setFormatter(new SimpleFormatter());
LOGGER.addHandler(fileHandler);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 5000; i++) {
sb.append("aaaaaaaaaa");
}
LOGGER.info(sb.toString());
}
}
有沒有辦法使這項工作?
FileHandler
有一個限制,如其文檔中所述:
<handler-name>.limit 指定寫入任何文件的近似最大數量(以字節為單位)。 如果這為零,則沒有限制。 (默認為無限制)。
它將默認值聲明為零,但限制由在使用的 JRE/JDK 安裝目錄中找到的logging.properties
文件設置。 在我的系統上,Java 8 或 Java 17,此文件包含以下行
java.util.logging.FileHandler.limit = 50000
將限制設置為 50000。
可能的解決方案:
FileHandler
的構造函數中設置限制,例如:new FileHandler("%h/java%u.log", 0, 1); // using the default file pattern
logging.properties
),其限制由java.util.logging.config.file
系統屬性指定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.