强制Apache更新日志文件路径而不重新启动WAMP

时间:2016-01-29 14:54:00

标签: apache logging wamp httpd.conf

如何强制Apache WAMP 的一部分) 新日志 新日志文件,无需重新启动服务器?

Apache2 \ conf \ httpd.conf 中,我更新了ErrorLogCustomLog指令的路径。

  • 之前:

    ErrorLog ../logs/a.log
    ...
    CustomLog ../logs/b.log common
    
  • 后:

    ErrorLog ../logs/a2.log
    ...
    CustomLog ../logs/b2.log common
    

LogLevelLogFormat指令未更改。

我更改后,我设法(我不知道 - 意外或自动完成,但我确定我没有明确重启服务器)以获取新日志新文件。也许这并没有立即发生,因为我在20分钟后观察到了这一点(创建了新的日志文件并且新日志发送到了它们,而不是旧日志)。这就是我想要实现的目标!

但后来又改变了路径:

  • ../logs/a2.log => ../logs/a3.log
  • ../logs/b2.log => ../logs/b3.log

但是日志没有进入新路径(它们仍然写入../logs/a2.log../logs/b2.log)。

我正在考虑以下2种可能的方法,这可以解决我的问题,但可能还有另一种方法:

  1. 在不停止Apache(或WAMP中的任何其他组件)的情况下重新加载整个 httpd.conf
  2. 仅强制更新 ErrorLog CustomLog 行(就直接在cmd中执行某些命令而忽略httpd而言)。 conf文件)。
  3. 详情

    • WAMP5 1.6.6(升级不是解决方案
      • Apache 2.0.59(大约9年前发布
    • 我无法重启服务器,因为用户需要在不中断的情况下访问应用程序。

2 个答案:

答案 0 :(得分:1)

在Windows上,apache.exe -k restart略显优雅 - 飞行中的请求需要30秒才能完成。

除此之外,您可能会因为安全地重命名正在Windows上写入的文件而运气不好。出于这个原因,您永远不应该运行单个HTTP服务器。你无法进​​行任何日常维护。

答案 1 :(得分:1)

要正确回答这个问题,您需要告诉我您的apache配置中使用了哪个日志记录api。

如果使用log4j,请参阅以下网址Log4j Automatic Configuration

您可以在此处找到有关在Log4j配置文件中设置monitorInterval属性的信息。将此属性设置为非零值(> 5)将导致在下次评估和/或记录日志事件时检查文件,并且自上次检查后已经过了以秒为单位的monitorInterval