【发布时间】:2016-05-07 08:35:07
【问题描述】:
我如何强制 Apache(WAMP 的一部分)写入 新日志到 >新的日志文件而不重新启动服务器?
在 Apache2\conf\httpd.conf 中,我更新了 ErrorLog 和 CustomLog 指令的路径。
-
之前:
ErrorLog ../logs/a.log ... CustomLog ../logs/b.log common -
之后:
ErrorLog ../logs/a2.log ... CustomLog ../logs/b2.log common
LogLevel 和 LogFormat 指令未更改。
在更改它们之后,我设法(我不知道如何 - 意外或它是自动完成的,但我确信我没有明确重新启动服务器)在新文件中获取新日志。也许这并没有立即发生,因为我在 20 分钟后观察到了这一点(新日志文件被创建并且新日志进入它们,而不是旧日志)。这就是我想要达到的目标!
但后来我又改变了路径:
-
../logs/a2.log=>../logs/a3.log -
../logs/b2.log=>../logs/b3.log
但日志没有进入新路径(它们仍被写入../logs/a2.log 和../logs/b2.log)。
我正在考虑以下 2 个可能的方法可以解决我的问题,但可能还有另一种方法:
- 在不停止 Apache(或 WAMP 中的任何其他组件)的情况下重新加载整个 httpd.conf。
- 仅强制更新
ErrorLog和CustomLog行(就直接在 cmd 中执行某些命令而言,忽略 httpd.conf 文件)。
详情:
- WAMP5 1.6.6(升级不是解决方案)
- Apache 2.0.59(大约 9 年前发布)
- 我无法重新启动服务器,因为用户需要不间断地访问应用程序。
【问题讨论】:
-
我不使用 wamp,但一般
apachectl graceful可用于重新加载配置而不会终止现有连接。 -
或 apache 重新加载(httpd 重新加载)
-
这些不是 Linux 的解决方案吗?
-
你的意思是像 logrotate 这样的东西吗?
-
此时的目的只是为了改变输出的位置。然后,我可以使用
CustomLog "|bin/rotatelogs.exe ../logs/b.%Y.%m.%d-%H.log 3600" common。所以,现在我只想使用新的日志文件,直到第一次 Apache 服务重启。
标签: apache logging wamp httpd.conf