`

apache日志 LogFormat参数说明

阅读更多
在apache的配置文件httpd.conf里默认有这么一句配置

logformat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" common

这是APACHE的日志记录格式设置,那么这种格式里的各个参数都代表什么意思呢,下面看一下具体的参数说明:



请求本身的情况将通过在格式字符串中放置各种"%"转义符的方法来记录,它们在写入日志文件时,根据下表的定义进行转换:

%a 远端IP地址
%A 本机IP地址
%B 除HTTP头以外传送的字节数
%b 以CLF格式显示的除HTTP头以外传送的字节数,也就是当没有字节传送时显示’-'而不是0。
%{Foobar}C 在请求中传送给服务端的cookieFoobar的内容。
%D 服务器处理本请求所用时间,以微为单位。
%{FOOBAR}e 环境变量FOOBAR的值
%f 文件名
%h 远端主机
%H 请求使用的协议
%{Foobar}i 发送到服务器的请求头Foobar:的内容。
%l 远端登录名(由identd而来,如果支持的话),除非IdentityCheck设为"On",否则将得到一个"-"。
%m 请求的方法
%{Foobar}n 来自另一个模块的注解Foobar的内容。
%{Foobar}o 应答头Foobar:的内容。
%p 服务器服务于该请求的标准端口。
%P 为本请求提供服务的子进程的PID。
%{format}P 服务于该请求的PID或TID(线程ID),format的取值范围为:pid和tid(2.0.46及以后版本)以及hextid(需要APR1.2.0及以上版本)
%q 查询字符串(若存在则由一个"?"引导,否则返回空串)
%r 请求的第一行
%s 状态。对于内部重定向的请求,这个状态指的是原始请求的状态,—%>s则指的是最后请求的状态。
%t 时间,用普通日志时间格式(标准英语格式)
%{format}t 时间,用strftime(3)指定的格式表示的时间。(默认情况下按本地化格式)
%T 处理完请求所花时间,以秒为单位。
%u 远程用户名(根据验证信息而来;如果返回status(%s)为401,可能是假的)
%U 请求的URL路径,不包含查询字符串。
%v 对该请求提供服务的标准ServerName。
%V 根据UseCanonicalName指令设定的服务器名称。
%X 请求完成时的连接状态:X= 连接在应答完成前中断。
+= 应答传送完后继续保持连接。
-= 应答传送完后关闭连接。

(在1.3以后的版本中,这个指令是%c,但这样就和过去的SSL语法:%{var}c冲突了)
%I 接收的字节数,包括请求头的数据,并且不能为零。要使用这个指令你必须启用mod_logio模块。
%O 发送的字节数,包括请求头的数据,并且不能为零。要使用这个指令你必须启用mod_logio模块。

修饰符
可以紧跟在"%"后面加上一个逗号分隔的状态码列表来限制记录的条目。例如,"%400,501{User-agent}i" 只记录状态码400和501发生时的User-agent头内容;不满足条件时用"-"代替。状态码前还可以加上"!"前缀表示否 定,"%!200,304,302{Referer}i"记录所有不同于200,304,302的状态码发生时的Referer头内容。

"<"和">"修饰符可以用来指定对于已被内部重定向的请求是选择原始的请求还是选择最终的请求。默认情况下,%s, %U, %T, %D, %r 使用原始请求,而所有其他格式串则选择最终请求。例如,%>s 可以用于记录请求的最终状态,而 %<u 则记录一个已经被内部重定向到非认证资源的请求的原始认证用户。

一些说明
出于安全考虑,从2.0.46版本开始,%r, %i, %o 中的特殊字符,除了双引号(")和反斜线(\)分别用 \" 和 \\ 进行转义、空白字符用C风格(\n, \t 等)进行转义以外,非打印字符和其它特殊字符使用 \xhh 格式进行转义(hh是该字符的16进制编码)。在2.0.46以前的版本中,这些内容会被完整的按原样记录。这种做法将导致客户端可以在日志中插入控制字 符,所以你在处理这些日志文件的时候要特别小心。

在2.0版本中(不同于1.3),%b 和 %B 格式字符串并不表示发送到客户端的字节数,而只是简单的表示HTTP应答字节数(在连接中断或使用SSL时与前者有所不同)。mod_logio提供的 %O 格式字符串将会记录发送的实际字节数。

示例
一些常见的格式串:

通用日志格式(CLF)
"%h %l %u %t \"%r\" %>s %b"

带虚拟主机的通用日志格式
"%v %h %l %u %t \"%r\" %>s %b"

NCSA扩展/组合日志格式
"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""

Referer日志格式
"%{Referer}i -> %U"

Agent(Browser)日志格式
"%{User-agent}i"

文章开头提到的LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" common 中间用" "包含的参数都可以在上面找到对应的说明,至于最后的那个common,其实就是这种格式的一种标识符,当你套用这种格式记录日志的时候,就可以直接使用 标识符了,例如:
CustomLog logs/access_log common
就会在logs下面产生一个以common为格式记录的日志文件access_log



附:我的服务器日志记录设置:

LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/access_log_%Y%m%d 86400 480" combined


分享到:
评论

相关推荐

    Web应用安全:apache日志配置(实验).doc

    实验一:apache日志配置 实验目的 修改apache主配置文件中的日志配置 实验内容 在kali中找到主配置文件 修改日志配置 访问服务器产生日志 查看日志 实验环境 Kali系统 实验步骤 1.在kali中找到apache的主配置文件...

    apache虚拟主机访问日志配置例子.docx

    Apache虚拟主机访问日志配置是管理服务器日志记录的重要环节,它有助于监控网站流量、分析用户行为以及排查错误。在Linux和Windows系统上,Apache的配置方式有所不同,但核心目标都是为了有效地记录和管理日志文件。...

    Apache2中文使用手册

    Apache2会记录访问日志和错误日志,通过LogFormat和CustomLog指令,你可以自定义日志格式,以便分析网站流量和诊断问题。 性能优化方面,可以通过调整MaxKeepAliveRequests(每个连接的最大请求数)、KeepAlive...

    apache配置文件详解

    #### 五、关键参数说明 **5.1 VirtualHost** - **说明**: VirtualHost指令用于配置虚拟主机,使得一台物理服务器能够托管多个不同的网站。 - **作用**: 通过域名或IP地址来区分不同的网站,每个虚拟主机都可以有...

    Apache.rar

    Apache的日志记录可以通过CustomLog和LogFormat指令自定义,包括访问日志和错误日志。 此外,Apache还支持各种脚本语言的集成,如PHP、Perl和Python,这使得它成为一个非常灵活的平台,可以承载各种类型的应用程序...

    linux-Apache

    日志配置可在`httpd.conf`中的LogFormat和CustomLog指令进行调整。 五、安全与性能优化 1. SSL/TLS支持:安装mod_ssl模块并配置SSL证书以启用HTTPS。 2. 访问控制:使用`&lt;Directory&gt;`指令限制特定目录的访问,或者...

    Apache与tomcat配置

    以下是对Apache httpd.conf配置文件中一些关键选项的详细解释: 1. **ServerType**: 服务器的运行模式,可以设置为`独立`或`inetd`。独立模式(通常默认)使Apache始终运行,而inetd模式会在HTTP请求到达时由inetd...

    Apache 2.0手册中文版翻译

    7. **日志记录**:Apache可以记录详细的访问日志,通过LogFormat指令自定义日志格式,便于分析网站流量和调试问题。 8. **性能优化**:手册将指导如何通过调整配置参数,如KeepAlive、MaxKeepAliveRequests和Time...

    Apache 使用指南与实现原理

    通过调整LogFormat,可以定制日志内容。 5. **安全与性能优化**:Apache提供多种手段来提高安全性,如限制访问权限、使用SSL/TLS加密通信、配置防火墙规则等。为了优化性能,可以调整MaxClients等参数以控制并发...

    Apache配置文件详解

    Apache配置文件是Apache Web服务器的核心组成部分,用于定义服务器的行为方式、性能参数及安全策略等。通过合理的配置,可以极大地提高Apache的性能和安全性,使其能够更好地适应不同的应用场景。本文将详细介绍...

    Apache+Tomcat+MySQL 环境搭建

    LogFormat "%h %l %u %{%Y-%m-%d-%H-%M-%S}t \"%r\" %&gt;s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{X-UP-CALLING-LINE-ID}i\" %v %p %I %O %D" waptown CustomLog "|'D:/Program Files/Apache Software ...

    node-alpine:Alpine-Node.js的Apache日志解析器

    它支持三种最常见的日志格式(“通用日志格式”,“带有虚拟主机字段的通用日志格式”和“组合日志格式”),还允许您通过向其传递用于生成日志文件的LogFormat字符串来指定自定义日志格式。要解析。预定义的日志...

    Apache2中文手册

    通过LogFormat,还能定制日志内容。 七、模块管理 Apache2的强大之处在于其模块化设计。如mod_rewrite用于URL重写,mod_rewrite可以帮助实现SEO友好的URL和URL路由。mod_php、mod_wsgi则分别用于集成PHP和Python...

    Apache服务器配置与管理.ppt

    4. **日志记录**:Apache的日志可以分为访问日志和错误日志,通过配置LogFormat和CustomLog可以定制日志格式和存储位置。同时,工具如Webalizer可以用来分析这些日志,提供网站访问统计信息。 5. **模块管理**:...

    Apache HTTP服务器 2.0版本文档

    Apache的日志功能强大,可以记录访问日志、错误日志,通过LogFormat自定义日志格式,便于分析服务器状态和用户行为。ErrorDocument指令允许自定义错误页面,提升用户体验。 八、CGI与FastCGI Apache 2.0支持CGI...

    Apache中文手册

    主日志文件通常为`access_log`和`error_log`,通过LogFormat指令可以自定义日志格式。 七、模块扩展 Apache的强大之处在于其丰富的模块生态系统,如mod_php用于处理PHP脚本,mod_wsgi用于运行Python应用,mod_jk或...

    apache 配置文件

    11. **LogFormat**: 自定义日志格式,如`LogFormat "%h %l %u %t \"%r\" %&gt;s %b" combined`定义了一个组合的日志格式,包括客户端IP、用户名、请求时间、请求行、状态码和传输的字节数。 12. **CustomLog** 和 **...

    Apache Server系统管理员手册(PDG)

    - **自定义日志格式**:通过`LogFormat`指令定义日志内容和格式。 6. **性能优化** - **多进程模型(MPM)**:如Prefork和Worker模式,选择适合服务器环境的模型。 - **缓存机制**:利用mod_cache模块提高静态...

    Apache优化文档

    24. **不记录不必要的访问日志**:通过 `SetEnvIf` 或 `LogFormat` 配置,只记录有意义的访问日志,减少日志文件大小。 以上都是Apache优化的关键点,实施这些策略可以显著提升服务器性能,降低安全风险,提高用户...

    Apache2.0中文手册(chm格式)

    这个Apache2.0中文手册详细解释了以上所有概念,并提供了配置示例和故障排查建议,对于管理员来说是一份宝贵的参考资料。通过深入学习和实践,你可以熟练掌握Apache2.0的配置和管理,从而更好地服务于Web应用程序的...

Global site tag (gtag.js) - Google Analytics