不要在 Apache access.log 中记录某些请求

Don't log certain requests in Apache access.log

我最近用自托管分析工具 Piwik 替换了 Google Analytics。

这意味着每次有人连接我的网站时http://www.mywebsite.com, a Javascript tracking code is executed on the client, that calls my Piwik server http://www.mywebsite.com/piwik/piwik.php

结果:

  1. 在我服务器的 Apache access.log 上,有一行关于 http://www.mywebsite.com,这是正常的
  2. 在我的Piwik数据库中,存储了关于这次访问的信息,这是正常的
  3. 在我服务器的 Apache access.log 上,有一行关于我的 Piwik 服务器收到跟踪请求(由客户端使用 JS 执行)

第 3 部分的日志记录显然太多了! 从现在开始,由于安装了 Piwik,我的 access.log 大小加倍了!

如何删除 Apache 登录 access.log 连接到 http://www.mywebsite.com/piwik/piwik.php 的事实?即客户端 JS 跟踪代码 <--> Piwik 服务器 ?

Apache 手册包含有关条件日志记录的部分

https://httpd.apache.org/docs/2.4/logs.html

你需要做的是在满足条件时设置一个环境变量(路径是piwik/piwik.php)?然后你可以在 apache 日志文件配置中使用该环境变量。

解决方案是禁用某些请求的日志记录(例如在 /etc/apache2/sites-available/000-default.conf 使用 Debian 8):

<VirtualHost *:80>
  ServerName www.mywebsite.com
  DocumentRoot /home/www/mywebsite
  ...
  SetEnvIf Request_URI "^/piwik(.*)$" dontlog
  CustomLog ${APACHE_LOG_DIR}/other_vhosts_access.log vhost_combined env=!dontlog
</VirtualHost>

在 Apache 日志文件中禁用跟踪日志不是最好的主意。如果您的 Piwik 由于某种原因崩溃或您的跟踪在一段时间内(例如周末)无法正常工作,您将丢失您的数据。

Apache 日志可以将您保存在这里,然后您可以使用 LogAnalytics 重播您的流量:http://piwik.org/log-analytics/#logfile

最好有合理的日志文件存储策略,然后从日志中删除数据。