将访问日志单独存放到 Apache 文件夹中

将访问日志单独存放到 Apache 文件夹中

有什么方法可以让 Apache 为单个文件夹创建访问日志?

此文件夹中的文件将被频繁访问,因此我宁愿避免使用任何类型的脚本来生成日志。

例如:

/folder
/folder/often_access.txt 
/folder/often_access.exe

理想情况下,我希望 Apache 轮流保存这些文件的访问日志,即:

/folder/log/often_access.May2012.log

如果可能的话,我可以创建一个脚本来按需读取日志。

我无法使用子域名,因为这些文件必须通过 HTTPS,并且我们没有通配符证书。

有任何想法吗?

更新: 我预计其中一些文件的访问频率将超过每秒 10-20 次。这是一个更新通知程序。其中一个文件是一个巨大的二进制文件,另一个只是包含最新版本的文本。

答案1

可以使用环境变量mod_setenvif

但你为什么不应该呢? 这是一个巨大的安全风险! 例如,Apache 内置的此类功能会通过使文件句柄数量过载而打开 DoS 机会。在此示例中,假设您的服务器上一次只能打开 16 个文件。我现在可以通过遍历 、 、 来清除这些文件描述符/1——Apache/2现在/16必须维护 16 个日志。

最安全的方法(但绝不是最节省资源的)是将每个请求传送到脚本:

CustomLog "|/some/script/for/parsing/logs" combined

这不会消除上述选项 - 但是它将允许您在日志存储位置方面拥有更多的灵活性,并减轻 Apache 在维护服务器稳定性方面的责任。

最后,你应该您要做的正是您不想做的——事后处理这些。您正在寻找的是某种聚合解析——即,哪些行处理一些独特的目录集。这实际上会使用多久?如果不经常使用,那么只查看grep日志并显示其输出有什么问题?这些是您应该首先问的问题。

相关内容