首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于正则表达式的自定义Apache日志文件

问基于正则表达式的自定义Apache日志文件
EN

Stack Overflow用户
提问于 2014-10-06 21:49:00
回答 1查看 230关注 0票数 0

我正在做一个项目,它需要一个特殊的Centos Apache服务器设置。所有条目必须经过预处理,并按特定条件进行排序,然后放入单独的日志文件中。

例如,以这些Apache请求为例:

代码语言:javascript
复制
http://logs.domain.com/log.gif?obj=test01|id=886655774|e=via|r=4524925241
http://logs.domain.com/log.gif?obj=test01|id=886655774|e=via|r=9746354562

对于每个条目,Apache必须搜索请求URL。如果找到"obj"-parameter,则必须创建具有此名称的日志。在本例中,创建了一个名为"test01“的文件(如果它还不存在),其中包含这两个条目。

我发现了这一点:rewrite.html和假设,它可以用某种RegEx来完成,但我仍然需要朝着正确的方向进一步推进。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-07 02:08:56

Apache不支持这种细粒度的日志指导。但是,您当然可以编写一个日志读取器,它从Apache日志中读取,然后写入适当的子日志。

有三件事需要注意:

  1. Apache写入是而不是原子,而Apache使用没有文件锁定。这意味着读取日志的程序不能保证最后一个日志条目已经完成,并且没有可靠的实时方法来判断Apache当前是否正在写入日志。
  2. 错误日志可以有多行,而且只有第一行才能与您的模式匹配。此外,许多CGI脚本将在没有适当前缀的情况下编写行。除非您自己编写所有代码,否则很难控制这一点。但是,访问日志至少是非常标准的1行=1条目,带有前缀。
  3. 读取器必须跟踪磁盘上某个位置的当前文件( atime、ctime和size ),以便如果它停止并重新启动,它可以继续运行。此外,当Apache开始编写新日志时,它必须正确地处理切换。(旧日志被重命名。)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26225426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档