有几个选项,它取决于你需要多少信息。如果您只想知道基本活动(每个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。 (我目前正在评估built-in webserver in php 5.4--它支持路由,因此可能非常适合网络服务。)
顺便说一句,分析服务器日志与Google Analytics(分析)并行:它可以帮助您了解准确度每个。
也许你可以搜索一些分析你的访问日志的东西(对性能没有影响) – greg0ire
不是一个坏主意。我对Apache不太了解 - 我怎么能告诉它为每个请求记录'Accept'头? –
我知道你可以自定义日志格式。请参阅[LogFormat](http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#logformat)指令文档。 – greg0ire