“所有孩子都喜欢日志!”
phhttpd 为其写入的每个日志维护日志缓冲区。记录的事件在报告时放入这些缓冲区中,而不是立即写入磁盘。这些日志在正常操作期间或定期写入,随着它们的填充而写入。这大大降低了保持详细日志对性能的影响。
phhttpd 在虚拟服务器粒度上保留有趣的日志。您可以通过在要记录的每个源的虚拟服务器的日志部分中包含一个实体来指定要保留哪些日志。每个日志源都有一个实体,该实体的属性定义了它的记录位置。它看起来像这样
<logs> <LOGSOURCE mode=OCTALMODE file=PATH> ... </logs> |
模式是要打开的文件的八进制权限模式。由于它是由简单的例程解析的,因此强烈建议使用前导 0。文件是要写入记录事件的文件。LOG_SOURCE 是以下之一
phhttpd 日志条目包含在文本文件中的单行中。它们包含写入日志条目的时间、与导致日志条目的连接关联的不透明令牌,以及实际条目。
“referer”和“agent”日志条目的内容只是标头中给出的字符串。“access”日志的内容更有趣一些。它包含被请求的解码后的相对 URL,后跟传输的总字节数,以及传输所花费的时间(以秒为单位)。
387f7a45 387f7a45800210ac8910500 /index.html - 2132 0 |
第一个字段是自 Unix 纪元以来的时间(以秒为单位),又名time_t。第二个字段与导致日志条目的客户端连接相关联。它在连接期间是恒定的,并且写入到生成的所有类型的日志条目中。这允许日志解析器进行更完整的连接粒度分析。实际上,这个不透明令牌当前由客户端连接的时间、其远程和本地网络地址等构成,但这些值_不能_被解析,因为它们将来可能会更改。
由线程生成的条目将按时间顺序写入。但是,如果多个线程共享一个输出文件,则生成的条目可能不会按时间顺序写入。如果解析程序关心时间顺序,则由解析程序使用“time”字段进行排序。