apache执行时会记录其处理的全部请求的相关信息.同一时候,也会记录在处理过程中发生异常状况的相关信息.

server能够用多种格式将与请求相关的活动信息记录在多个日志文件里,只是却仅仅能记录一份错误信息.
关于活动记录,它是在请求完毕被处理后才会对日志内容进行写入.如一个大文件的上传,它是在文件上传完后才写入日志的.而错误信息是在发生错误时就写入.当然,错误的发生也是一瞬间的事.不会出现请求那种长时间处理.
有一种通用的显示日志的方式:CLF(common log format).格式是:
"%h %l %u %t \"%r\" %>s %b"
但随着发展,这样的格式的内容不够多,人们又组织了还有一种格式:
"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""
它能记住请求的浏览器版本号及其它client软件的名称与版本号等.
Apache自带有一个标准的日志模块:mod_log_config.另外,Apache 2.0还带有一个额外的模块:mod_logio.它是前者的加强版.并且在http://modules.apache.org的模块注冊区还有其他的第三方模块可供使用.
比如,我的Apache的httpd.conf文件里有例如以下配置:
ErrorLog "logs/error.log"
LogLevel warn
<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>
    CustomLog "logs/access.log" common
</IfModule>
在我的Apache安装文件夹下的logs文件夹下有两个文件,就是上面配置的error.log和access.log
上面的配置先定义了Apache错误信息的日志输出.并定义了日志输出的等级.等级有例如以下几种:
 等级名称 介绍 
emerg  紧急状况;server无法使用 
alert  必须立马採取动作 
 crit 危险状况 
 error 出现错误 
 warn 警告 
 notice 正常,但有情况要注意 
 info 普通信息 
 debug 调试级别信息,包含模块执行状态

设定一个等级后,日志文件里会记录它,以及它以上等级的日志.但无论设定为可值,永远都会记录notice等级的信息.


日志中格式字符串:
格式字符串 描写叙述
%% 百分号(Apache2.0.44或更高的版本号)
%a 远端IP地址
%A 本机IP地址
%B 除HTTP头以外传送的字节数
%b 以CLF格式显示的除HTTP头以外传送的字节数,也就是当没有字节传送时显示'-'而不是0。
%{Foobar}C 在请求中传送给服务端的cookieFoobar的内容。能够去cookie里的值
%D server处理本请求所用时间,以微为单位。
%{FOOBAR}e 环境变量FOOBAR的值
%f 文件名称
%h 远端主机
%H 请求使用的协议
%{Foobar}i 发送到server的请求头Foobar:的内容。
%l 远端登录名(由identd而来。假设支持的话)。除非IdentityCheck设为"On",否则将得到一个"-"。

%m 请求的方法
%{Foobar}n 来自还有一个模块的注解Foobar的内容。

%{Foobar}o 应答头Foobar:的内容。
%p server服务于该请求的标准port。

%P 为本请求提供服务的子进程的PID。
%{format}P 服务于该请求的PID或TID(线程ID)。format的取值范围为:pidtid(2.0.46及以后版本号)以及hextid(须要APR1.2.0及以上版本号)
%q 查询字符串(若存在则由一个"?"引导,否则返回空串)
%r 请求的第一行(请求url和方式)
%s 状态。

对于内部重定向的请求,这个状态指的是原始请求的状态,---%>s则指的是最后请求的状态。

%t 时间,用普通日志时间格式(标准英语格式)
%{format}t 时间,用strftime(3)指定的格式表示的时间。(默认情况下按本地化格式)
%T 处理完请求所花时间,以秒为单位。
%u 远程username(依据验证信息而来。假设返回status(%s)为401,可能是假的)
%U 请求的URL路径,不包括查询字符串。
%v 对该请求提供服务的标准ServerName
%V 依据UserCanonicalName指令设定的server名称。

%X 请求完毕时的连接状态:

X= 连接在应答完毕前中断。

+= 应答传送完后继续保持连接。
-= 应答传送完后关闭连接。

(在1.3以后的版本号中,这个指令是%c,但这样就和过去的SSL语法:%{var}c冲突了)

%I 接收的字节数,包含请求头的数据,而且不能为零。要使用这个指令你必须启用mod_logio模块。
%O 发送的字节数,包含请求头的数据。而且不能为零。要使用这个指令你必须启用mod_logio模块。


依照日或小时记录请求日志
======================================
使用CustomLog及rotatelogs(已经在apache的bin文件夹下包括:rotatelogs.exe.linux下文件夹可能不同):
CustomLog "| bin/rotatelogs logs/access_log.%Y-%m-%d 86400" combined
该配置会将日志输出到还有一程序,而非文件.即:rotatelogs.exe.这样,我们就能够在不重新启动Apache的情况下来生成新的文件.该脚本会在指定时间自己主动开启新文件,并写入日志.
rotatelogs第一个參数是日志文件的文件路径和名:logs/access_log.%Y-%m-%d 86400 假设它包括有一个以上的%字符,则会被作为strftime(3)的格式字符串来处理;如上面的格式表示年月晶.否则,一个十位数长的更新时间( 秒为单位)会被附加到文件名称上.如:若文件名称为foo,则会产生如foo.1234567890的日志文件.而上面的文件则会产生:access_log.2011-04-25这种文件.
第二个參数是两次更新时间的间隔(以秒为单位).当系统时间是此參数值的倍数时,它就会产生更新操作.如,一天有86400秒,若设定此境遇早每天午夜就会产生新的日志文件.

Apache日志优化的更多相关文章

  1. 【处理多服务器日志合并处理问题】多服务器的日志合并统计——apache日志的cronolog轮循

    转发:http://www.chedong.com/tech/rotate_merge_log.html   内容摘要:你完全不必耐心地看完下面的所有内容,因为结论无非以下2点:1 用 cronolo ...

  2. Apache性能优化总结

    1.介绍 首先要了解Apache采用的MPM(Multi -Processing Modules,多道处理模块),MPM是Apache的核心,它的作用是管理网络连接.调度请求.Apache2.0中MP ...

  3. linux apache服务器优化建议整理(很实用)

    转载:http://www.cnblogs.com/zhongbin/archive/2013/06/11/3131865.html 1.apache服务器的time_wait过多 fin_wait1 ...

  4. apache功能优化

    隐藏Apache版本等敏感信息 $ grep Server /usr/local/httpd/conf/extra/httpd-default.conf|grep -v "#" 修 ...

  5. 25个Apache性能优化技巧推荐

    25个Apache性能优化技巧推荐 Apache至今仍处于web服务器领域的霸主,无人撼动,没有开发者不知道.本篇文章介绍25个Apache性能优化的技巧,如果你能理解并掌握,将让你的Apache性能 ...

  6. elk系列7之通过grok分析apache日志

    preface 说道分析日志,我们知道的采集方式有2种: 通过grok在logstash的filter里面过滤匹配. logstash --> redis --> python(py脚本过 ...

  7. logresolve - 解析Apache日志中的IP地址为主机名

    logresolve是一个解析Apache访问日志中IP地址的后处理程序. 为了使对名称服务器的影响降到最低,logresolve拥有极为自主的内部散列表缓存, 使每个IP值仅仅在第一次从日志文件中读 ...

  8. Apache日志分析

    Apache日志统计举例 加些来了解一下如何统计Apache的访问日志,一般可以用tail命令来实时查看日志文件变化,但是各种的应用系统中的日志会非常复杂,一堆长度超过你浏览极限的日志出现在你眼前时, ...

  9. 关于Apache日志的统计

    统计apache日志文件里访问量前十的ip并按从多到少排列 五月 31, 2012 by FandLR   Filed under Linux Leave a comment 解法1: cat acc ...

随机推荐

  1. Elasticsearch之sense插件安装之后的浏览详解

    前提博客是 Elasticsearch之sense插件的安装(图文详解) 立马,可以看到 http://192.168.80.145:5601/app/sense 以后更新

  2. C# asp.net repeater实现排序功能,自动排序,点击头部排序,点击列排序

    在网上看到好多关于repeater排序的,自己动手用了,发现一些问题,贴源码后把发现的问题以及解决方法给出 repeater实现排序功能(单击升序排列,再单击降序排列).原理很简单,在<TD&g ...

  3. Java中的overload(方法的覆写)

    方法覆写(overload)与方法的重载非常相似,它在 Java的继承中也有很重要的应用. 写程序可能会碰到下面的情况,在父类中已经实现的方法可能不够精确,不能满足子类 的需求.例如在前面的 Anim ...

  4. MySQL 多表批量更新

    使用inner join 进行表更新sql 与mysql 的区别: SQL UPDATE W SET W.字段=新数据 FROM 表a W INNER JOIN 表B d ON W.wID=D.wid ...

  5. jQuery与js的区别,并有基本语法详解,

    通过过一下对比,我们能很清楚的发现jquery与js的区别,运用jquery能大量减少代码量,不过js里面关于时间的setinterval和settimeout只能用js <script src ...

  6. html5——全屏滚动

    鼠标滚轮 window.onmousewheel=function(){}; 基本描述 1.我们使用插件fullpage,为了更好的兼容性 2.动画效果是在滚动到这一屏时触发的,此时给当前屏幕加cur ...

  7. windows下使用批处理设置环境变量

    1. 设置临时环境变量 set BAT_HOME=c:\bat 此命令只对当前窗口有效,批处理或cmd窗口一关闭,变量就恢复原来的值了. 2. 设置永久环境变量 方法一 setx BAT_HOME C ...

  8. %2d

    %2d是C语言中printf函数的输出格式说明符. 具体解释如下: 使输出的int型的数值以2位的固定位宽输出.如果不足2位,则在前面补空格:如果超过2位,则按实际位数输出. 注:如果输出的数值不是i ...

  9. mysql高可用架构mha之master_ip_failover脚本

    脚本如下:           #!/usr/bin/env perl use strict; use warnings FATAL => 'all'; use Getopt::Long; my ...

  10. Charles 下载-破解-安装-配置

    我当前使用版本为V4.2.7 最新版本下载地址 Charles 在线破解工具 下载完之后,先进行安装,安装完之后,根据破解链接中的步骤来就ok了. 比较费劲配置在下面,不过跟着一步步来就一定能好的 点 ...