有几个选项,这取决于您需要多少信息。如果您只想了解基本活动(对每个 Web 服务的调用次数、时间、源 IP、用户代理),那么 apache 日志已经包含所有这些信息。使用 CustomLog 添加您需要的任何其他字段。例如,您提到了 Accept 标头,可以这样添加:
CustomLog logs/access_log "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" \"%{Accept}i\""
如果是 GET,POST,PUT 等包含在 %r 部分。
如果您想知道 POST 或 PUT 数据中的实际内容,那就更难了。极端的解决方案是使用mod_dumpio模块。这会记录所有客户端输入(所有标头、所有 cookie、所有 POST 数据)。如果人们使用您的 REST API 上传图像,那么无论好坏,您都会在日志中获得完整的图像。那可能会变得非常大。
我喜欢的解决方案是从 PHP 记录:在 PHP 脚本顶部或处理请求时的自定义日志。然后,您可以完全控制要记录的内容、最容易分析的格式,还可以将其放在上下文中(例如记录文本数据,但不记录图像字节)。在开发和小型站点中,我与 apache 日志记录并行执行此操作。如果 Apache 占用过多 CPU,则禁用 apache 日志记录,或完全绕过 Apache。(我目前正在评估php 5.4 中的内置网络服务器- 它支持路由,因此可能非常适合网络服务。)
顺便说一句,分析服务器日志最好与 Google Analytics 并行进行:它可以帮助您了解每个日志的准确性。