条件必选日志apache



我正在尝试在Apache中做条件日志。
实际上我有这个:

SetEnvIf Request_URI ^/assets/.* asset
SetEnvIf Request_URI ^/cron/.* cron
CustomLog /var/log/apache/assets.log common env=asset
CustomLog /var/log/apache/cron.log common env=cron
#CustomLog /var/log/apache/access.log combined "expr=(env=!asset && env=!cron)"

我希望最后注释行记录除"asset"之外的所有内容和";cron"。现在这个配置给了我一个错误,不知道,基于文档,如何构建"表达式"。
如果我使用

CustomLog /var/log/apache/access.log combined env=!asset

然后我记录所有除了资产,但我想记录所有除了资产和cron
不能做测试,因为这是一个生产环境,没有测试一个…


谢谢

找到了!我们必须以这种方式匹配两个环境

SetEnvIf Request_URI ^/assets/.* asset
SetEnvIf Request_URI ^/cron/.* cron
CustomLog /var/log/apache/assets.log common env=asset
CustomLog /var/log/apache/cron.log common env=cron
CustomLog /var/log/apache/access.log combined "expr=reqenv('asset_path') != 1 && reqenv('cron_mail') != 1"

这是因为我们必须获得两个env变量的值来检查是否都未设置。当我们使用SetEnvIf设置它们时,我们使用的形式是"如果Request_URI匹配,则将变量设置为1",所以我们必须使用"requenv"并使用整数比较(负值)

最新更新