Filtering Apache logs / conditional Logging
Log-ins used by Apache Web server is usually very wordy, they contain all type of information (image files, style sheets, javascript, son RSS, etc.)
This can be very troublesome when trying to access certain web pages. The only way to get through is to make use of conditional logging (it is not the only way to control the contents of the logs)
To do this, simply define an environment variable ,according to certain criteria, then request that the server does not write the file type within log when this variable exists:
SetEnvIf Request_URI "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|gz|swf|txt)$" dontlog
SetEnvIf Request_URI "^\/rss\/" dontlog
CustomLog /var/log/apache/access.log combined env=!dontlog
In the example above, requests concerns the following files type .ico, .pdf, .flx, .jpg, .jpeg, .png, .gif, .js, .css, .gz, .swf, ,.txt (they will not be written in the logs), the same goes for for all requests for the /rss/ directory
Note
First of all, the
mod_setenvif module must be loaded.
The command
apache2-M (or httpd-M, depending on the Apache server installed or distribution used) displays the modules loaded.
Under Debian:
root@debian:~# apache2 -M
Loaded Modules:
core_module (static)
log_config_module (static)
logio_module (static)
mpm_prefork_module (static)
http_module (static)
so_module (static)
alias_module (shared)
auth_basic_module (shared)
authn_file_module (shared)
authz_default_module (shared)
authz_groupfile_module (shared)
authz_host_module (shared)
authz_user_module (shared)
autoindex_module (shared)
cgi_module (shared)
dir_module (shared)
env_module (shared)
mime_module (shared)
negotiation_module (shared)
php5_module (shared)
setenvif_module (shared)
status_module (shared)
Syntax OK