Apache滚动日志配置

Apache日志记录,记录以备后查,部份摘抄自Apache中文手册,翻译金步国

一个典型的记录格式如下:

LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access_log common 

它定义了一种特定的记录格式字符串,并给它起了个别名common ,其中的"%"指示服务器用某种信息替换,其他字符则不作替换。引号(")必须加反斜杠转义,以避免被解释为字符串的结束。格式字符串还可以包含特殊的控制符,如换行符"\n" 、制表符"\t"。

CustomLog指令建立一个使用指定别名的新日志文件,除非其文件名是以斜杠开头的绝对路径,否则其路径就是相对于ServerRoot的相对路径。

上述配置是一种被称为通用日志格式(CLF)的记录格式,它被许多不同的Web服务器所采用,并被许多日志分析程序所识别,它产生的记录形如:

127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 

记录的各部分说明如下:

127.0.0.1 (%h) 发送请求到服务器的客户端地址IP,如果客户端使用了代理,则是代理的IP地址

- (%l)  这是由客户端identd进程判断的RFC1413身份(identity),输出中的符号"-"表示此处的信息无效。除非在严格控制的内部网络中,此信息通常很不可靠,不应该被使用。只有在将IdentityCheck指令设为 On 时,Apache才会试图得到这项信息

frank (%u)  这是HTTP认证系统得到的访问该网页的客户标识(userid),环境变量REMOTE_USER会被设为该值并提供给CGI脚本。如果状态码是401,表示客户未通过认证,则此值没有意义。如果网页没有设置密码保护,则此项将是"-"。  

[10/Oct/2000:13:55:36 -0700] (%t) 这是服务器完成请求处理时的时间,其格式是:[日/月/年:时:分:秒 时区],可以在格式字符串中使用 %{format}t 来改变时间的输出形式

"GET /apache_pb.gif HTTP/1.0" (\"%r\")  引号中是客户端发出的包含许多有用信息的请求行。可以看出,该客户的动作是GET ,请求的资源是/apache_pb.gif ,使用的协议是HTTP/1.0 。另外,还可以记录其他信息,如:格式字符串"%m %U%q %H"会记录动作、路径、查询字符串、协议,其输出和"%r"一样。

200 (%>s) 这是服务器返回给客户端的状态码

2326 (%b) 最后这项是返回给客户端的不包括响应头的字节数。如果没有信息返回,则此项应该是"-",如果希望记录为"0"的形式,就应该用%B

组合日志格式(Combined Log Format)

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
CustomLog log/access_log combined

这种格式与通用日志格式类似,但是多了两个 %{header}i 项,其中的header可以是任何请求头。这种格式的记录形如:

127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"

其中,多出来的项是:

"http://www.example.com/start.html" (\"%{Referer}i\")
"Referer"请求头。此项指明了该请求是被从哪个网页提交过来的,这个网页应该包含有/apache_pb.gif或者其连接。
"Mozilla/4.08 [en] (Win98; I ;Nav)" (\"%{User-agent}i\")
"User-Agent"请求头。此项是客户端提供的浏览器识别信息。 
日志滚动和管道日志
即使一个并不繁忙的服务器,其日志文件的信息量也会很大,一般每10000个请求,访问日志就会增加1MB或更多。这就有必要定期滚动日志文件。由于Apache会保持日志文件的打开,并持续写入信息,因此服务器运行期间不能执行滚动操作。移动或者删除日志文件以后,必须重新启动服务器才能让它打开新的日志文件

Apache httpd可以通过管道将访问记录和出错信息传递给另一个进程,而不是写入一个文件,由于无须对主服务器进行编程,这个功能显著地增强了日志的灵活性。只要用管道操作符"|"后面跟一个可执行文件名,就可以使这个程序从标准输入设备获得事件记录。Apache在启动时,会同时启动这个管道日志进程,并且在运行过程中,如果这个进程崩溃了,会重新启动这个进程(所以我们称这个技术为"可靠管道日志")。

管道日志进程由其父进程Apache httpd产生,并继承其权限,这意味着管道进程通常是作为root运行的,所以保持这个程序简单而安全极为重要。

管道日志的一种重要用途是,允许日志滚动而无须重新启动服务器。为此,服务器提供了一个简单的程序rotatelogs

CustomLog "|bin/rotatelogs /var/logs/logfile 86400" common 

此配置会建立文件"/var/logs/logfile.nnnn",其中的nnnn是名义上的日志启动时的系统时间(此时间总是滚动时间的倍数,可以用于cron脚本的同步)。在滚动时间到达时(在此例中是24小时以后),会产生一个新的日志。

CustomLog "|bin/rotatelogs /var/logs/logfile 5M" common 

此配置会在日志文件大小增长到5兆字节时滚动该日志

ErrorLog "|bin/rotatelogs /var/logs/errorlog.%Y-%m-%d-%H_%M_%S.log 5M"

此配置会在错误日志大小增长到5兆字节时滚动该日志,日志文件名后缀会按照如下格式创建:errorlog.YYYY-mm-dd-HH_MM_SS

posted @ 2015-06-09 12:02  忘语  阅读(625)  评论(0编辑  收藏  举报