How can I generate seperate logs for different HTM

2019-02-27 21:19发布

I'm trying to breakout the logging of my website based on directory access, so I'm seeking an elaboration to this answer (or this answer too): In which file do place the suggested answer?

I put the following in my /etc/apache2/apache2.conf (actually via an Include my-logging.conf):

SetEnvIf Request_URI "^/download/.+$" download_access
CustomLog /home/jamie/apache-logs/download.log common env=download_access

The directory /home/jamie/apache-logs/ and the files therein are universally writable, but when I access the resource via my browser (http://download/index.html) the main access log (/var/log/access.log) is updated but not the log I was hoping would be: /home/jamie/apache-logs/download.log remains untouched.

I'm reasonably certain mod_setenvif is already enabled:

$ sudo a2enmod setenvif
Module setenvif already enabled

How can I make this work?

2条回答
家丑人穷心不美
2楼-- · 2019-02-27 21:38

Head Slap!

Regular expression error:

SetEnvIf Request_URI "^/download/.+$" download_access

should be:

SetEnvIf Request_URI "^/download/.*$" download_access

Note the * versus the +.

查看更多
Melony?
3楼-- · 2019-02-27 21:41

EDIT:

No, it was the regex. Head slap is right.


Have you looked to see if there are places in /etc/apache2/apache2.conf or in the other included sites files (maybe /etc/apache2/sites-enabled/foo.conf or /etc/apache2/conf/foo.conf or something... I use a different distro) that have different CustomLog definitions?

There is more than likely something over-riding your statement. The best place to put the CustomLog directive is in the <VirtualHost> stanza that defines your site. That way, the directive will have the highest precedence so it will override the server-wide settings. What I think is happening is that your definition is setting a default for the server, but a more specific customlog statement is inside a VirtualHost and overriding it.

查看更多
登录 后发表回答