0

我有一个奇怪的问题:

我在 Windows 上使用 Apache,并尝试使用 mod_log_rotate 配置旋转日志,配置如下:

RotateLogs On
RotateLogsLocalTime On
RotateInterval 86400
CustomLog "C:\logdir\access_%d-%m-%Y-%H-%M-%S.log" common

但是,这会产生一个名为如下的文件:

access_03-05-2013-00-00-00.log

所以它适用于日期部分,即%d、%m、%Y,但不适用于日期以下的部分,即小时、分钟、秒,通过%H、%H、%S。

根据mod_log_rotate 的来源,它使用了 apr_strftime(),它本身似乎使用了 strftime()。我还查看了Microsoft 的 strftime 实现,它似乎支持相同的元素。

那么它怎么不能代替那些小时/分钟/秒的项目呢?这是特定于窗口的限制吗?

4

1 回答 1

0

同时我发现了为什么会发生这种情况:使用的时间戳是根据 RotateInterval“标准化”的,这意味着如果你使用 86400,小时、分钟和秒总是设置为 0。通过将 RotateInterval 设置为 3600(即一小时),小时值设置正确。

它不直观且没有记录(实际上整个文件名模式替换或多或少没有记录,除非我在某个地方错过了它),但是有了这个设置,它似乎可以按照我最初的意图工作。

于 2013-05-06T19:06:17.553 回答