gpt4 book ai didi

java - 使用具有文件大小限制和文件数量限制的 Logger

转载 作者:行者123 更新时间:2023-12-02 08:49:37 24 4
gpt4 key购买 nike

我想知道是否有人可以帮助我解决这个问题。我当前的代码已设置为使用 java.util.logging 中的 Logger,我们将日志写入单个文件,当我们需要访问日志时,我们只需读取该文件。

    String filename = name + ".log";
Logger logger = Logger.getLogger(name);
logger.setLevel(Level.ALL);
final FileHandler fileHandler = new FileHandler(filename, true);
final SimpleFormatter formatter = new LogFormatter();
fileHandler.setFormatter(formatter);
logger.addHandler(fileHandler);

然后通过以下方式获取日志内容

    Files.readAllLines(Paths.get(filename));

出现了文件大小可能变得太大的问题,因此我想限制它。阅读文档我可以执行以下操作

    final FileHandler fileHandler = new FileHandler(filename, 1000000, 3, true);

这将创建最多三个 1MB 文件,当第三个文件填满时循环,清除第一个文件并再次从那里写入。这是一个完美的解决方案,但有两个问题我不确定如何解决。

首先,有没有一种简单的方法可以找到所有创建的文件的名称? (更准确地说,有一种简单的方法可以做到这一点吗?我很感激我可以只查找 filename.0、filename.1 ... 直到极限)。

其次,如何找到哪个是“Activity ”文件。例子。假设一个周期已经完成,并且存在三个文件(“file.0”、“file.1”、“file.2”)。如果 Logger 当前正在写入 file.1,我如何确定这一点,因此当我将日志生成为 List 时,日志顶部是最旧的​​内容(本例中为 file.2)

感谢您的回复。

最佳答案

Firstly is there an easy way to find the name of all the files created? (More precisely is there an easy way to do this? I appreciate I can just look for filename.0, filename.1 ... up to the limit).

否,但已提交 RFE 来提供此信息。看: How can I output the name of the current java.util.logging.Logger log file name?

Secondly how do I find which is the "active" file. Example. Lets say that one cycle has already been completed and there are three files ("file.0", "file.1", "file.2"). If the Logger is currently writing to file.1, how do I determine this, so therefore when I produce the log as List the top of the log is the oldest content (file.2 in this example)

根据source code for FileHandler::rotate ,日志文件向下旋转并从末尾删除。因此位置零始终是 Activity 文件。

关于java - 使用具有文件大小限制和文件数量限制的 Logger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60868584/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com