1

我在 RHEL 7 上使用 Tomcat 8.0.21。在我的 Java 代码中,我使用java.util.logging.Logger.

始终只有一个日志文件。如果我重新启动 Tomcat,日志将从那一刻重新开始,并且所有以前的日志都消失了。

我按照此处%g的说明添加了文件名,但它只在文件名中添加了 0 并且没有发生旋转。

这是我创建FileHandler. strFilePath值例如是“/tmp/mylog.log”。LogFormatter是我自己的班级。

// Need to set format with own formatter class to get plain text to one line (default format is XML).
FileHandler file_handler = new FileHandler(strFilePath);
file_handler.setFormatter(new LogFormatter());
logger.addHandler(file_handler); 

在我的 Windows 7 笔记本电脑上,日志使用相同的代码和 Tomcat 版本可以很好地旋转。

如何Logger在我的 RHEL 服务器上启用 Java 日志文件轮换?

编辑:我想我可以在构建时将时间戳添加到文件名FileHandler中。我要试试。

4

2 回答 2

1

FileHandler 仅在超出限制(或无法锁定文件)时旋转。如果您想按时间旋转文件,那么您必须为此编写代码。如果您只想触发旋转,那么只需在打开实际文件处理程序之前创建一个限制为零字节的丢弃文件处理程序。

new FileHandler(pattern, 0, 1, false).close();
于 2015-10-02T14:30:51.493 回答
0

FileHandler这不是一个完美的解决方案,但我认为当我以这种方式构建时我不会丢失旧日志:

FileHandler file_handler = new FileHandler(strFilePath.replace("<timestamp>", new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss").format(new Date())));

<timestamp>在文件名中有“”字符串,在这里被替换了。我认为只有在重新启动 Tomcat 时才会创建一个新的日志文件,因此日志文件可能会变大。但这是迄今为止我提出的最好的。

于 2015-10-01T19:20:26.670 回答