簡體   English   中英

output如何與FileHandler長線?

[英]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.

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