【问题标题】:Apache mod_rotate_log filename replacement not working for below-day resolutionApache mod_rotate_log 文件名替换不适用于当天解决方案
【发布时间】:2013-05-03 20:22:07
【问题描述】:

我有一个奇怪的问题:

我在 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 的小时、分钟、秒。

根据source of mod_log_rotate,它使用了apr_strftime(),它本身似乎使用了strftime()。我也看了Microsofts implementation of strftime,好像支持同样的元素。

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

【问题讨论】:

    标签: apache logging strftime apr


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-21
      相关资源
      最近更新 更多