java - 保留日志文件的 2 个先前版本

标签 java java.util.logging

我的 Java 应用程序 CB 从数据库获取数据,例如“案例 1”。每次 CB 启动时都会创建一个日志文件:

Logger logger = Logger.getLogger("CBLog");  
fh = new FileHandler(CBDataPath + "\\CB.log";
logger.addHandler(fh);
SimpleFormatter formatter = new SimpleFormatter();  
fh.setFormatter(formatter);  
logger.info("CB started");  

我想针对特定情况保留日志文件的 2 个先前版本。如何最容易地做到这一点?

这是我的一个想法。我可以在案例数据库中维护一个表示运行编号的整数。每次连续运行都会将日志文件命名为 CB_CaseA_n.log,其中 n 是前一次运行编号加 1。每次在 CaseA 上运行 CB 时,都会在 CasaA 目录中搜索所有 CB_CaseA_?.log 文件,并且仅保留 3 个最新文件。即,在运行 10 时,CB_CaseA_7 将被删除。看起来不太优雅。

有更好的方法吗?

最佳答案

来自java.util.logging.FileHandler :

count specifies how many output files to cycle through (defaults to 1).

"%g" the generation number to distinguish rotated logs

创建一个具有计数和生成模式的 FileHandler:

new FileHandler("CBDataPath + "\\CB%g.log, Integer.MAX_VALUE, 2, false);

关于java - 保留日志文件的 2 个先前版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41579649/

相关文章:

java - Actor 可以处理点击和按键事件吗?

java - Jackson 如何创建 JsonObject

java - 将 logging.properties 文件更改为 Slf4j 中的不同路径

Java 日志级别困惑

java - GUI javafx 应用程序无法通过 Linux 中的服务打开

java - Oracle 类型 DATE

java - 反编译 jar 文件以将其用作 intellij 中的项目

java - 如何设置 java.util.logging.Formatter 使用的语言环境?

java - 我正在尝试将文本从控制台记录到文本文件,但未创建文本文件

java - 将 ConsoleHandler 与自己的 PrintStream 一起使用会抑制 System.err