首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java:使用FileHandler进行日志记录,旋转

Java:使用FileHandler进行日志记录,旋转
EN

Stack Overflow用户
提问于 2018-11-21 16:36:30
回答 1查看 1.1K关注 0票数 3

我使用FileHandler进行日志记录。

代码语言:javascript
复制
Logger l = Logger.getLogger ("mylogger");
FileHandler fh = new FileHandler ("log", 1000000, 2, true);
l.addHandler (fh);

这将始终登录到log.0。如果达到1MB,它将被移动到log.1。在空日志0处继续日志记录。

代码语言:javascript
复制
log.0
log.1

据我所见,数字总是以0开头。是否有一种方法可以在当前日志中没有数字,并开始使用1旋转日志?

代码语言:javascript
复制
log  
log.1
EN

回答 1

Stack Overflow用户

发布于 2018-11-22 07:35:15

简单回答:不使用默认的FileHandler

也就是说,没有什么可以阻止您编写自己的StreamHandler。 implementation。它实际上只是几行修改来达到你想要的行为。

FileHandler实际上是在数组中预先生成所有文件名。您只需调整生成代码,使第一个元素不包含'0‘。非常不幸的是,它是一个私有方法,所以您必须重新实现整个类,而不是简单地扩展它。

注意:如果您打算将您的实现建立在OpenJDK的基础上,请尊重它所使用的许可证。我不是律师,所以您可能想询问其他人使用修改的OpenJDK源代码的合法性。

现在,这已经过时了,请查看generate()方法内部。有两个点使用generation参数,这是日志文件的索引。

代码语言:javascript
复制
} else if (ch2 == 'g') {
    word = word.append(generation); // this line
// ...and...
if (count > 1 && !sawg) {
    word = word.append('.').append(generation); // this line

你想让他们被if (generation > 0)保护

这将阻止日志文件在文件名上显示第0次索引。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53416679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档