分享

解决Apache日志文件ACCESS.LOG日益膨胀的一个办法: 数据库 站长之家

 zybingliu 2008-08-28
CustomLog "|c:/apache/bin/rotatelogs c:/apache/logs/%Y_%m_%d.access.log 86400 480" common

重启Apache


http://lamp./Apache/ApacheMenu/mod/mod_log_config.html#customlog:

CustomLog 指令

说明 设定日志的文件名和格式
语法 CustomLog file|pipe format|nickname [env=[!]environment-variable]
作用域 server config, virtual host
状态 基本(B)
模块 mod_log_config

CustomLog指令用来对服务器的请求进行日志记录。可以指定日志的格式,也可以使用环境变量根据请求的特征来自由地组织日志。

第一个参数指定了日志记录的位置,可以使用以下两种方式来设定:

file
相对于ServerRoot的日志文件名。
pipe
管道符"|"后面紧跟着一个把日志输出当作标准输入的处理程序路径。

安全

如果这里用到了程序,那么这个程序是以启动httpd的用户来执行的。因此如果启动httpd的用户是root ,那这个程序也将以root身份来运行;你需要确认这个程序是安全的。

注意

当在非UNIX平台上输入文件路径的时候,要特别注意即使平台本身是使用反斜杠(\)来分隔路径的,在这里也只能使用正斜杠(/)。通常在配置文件里只用正斜杠(/)来分隔路径总是不会错的。

第二个参数指定了写入日志文件的内容。它既可以是由前面的LogFormat指令定义的nickname ,也可以是直接按日志格式一节所描述的规则定义的format字符串。

例如:以下两组指令的结果是完全一样的:

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

# 明确使用格式格式字符串
CustomLog logs/access_log "%h %l %u %t \"%r\" %>s %b"

第三个参数是可选的,它根据服务器上特定的环境变量是否被设置来决定是否对某一特定的请求进行日志记录。如果这个特定的环境变量被设置(或者在"env=!name"的情况下未被设置),那么这个请求将被记录。

可以使用mod_setenvif和/或mod_rewrite模块来为每个请求设置环境变量。例如:如果你想在服务器上将所有对GIF图片的请求记录在不同于主日志文件的另一个日志文件中,你可以使用下面的指令:

SetEnvIf Request_URI \.gif$ gif-image
CustomLog gif-requests.log common env=gif-image
CustomLog nongif-requests.log common env=!gif-image

或者为了复制旧有的RefererIgnore指令的行为,你可以使用下面的指令:

SetEnvIf Referer example\.com localreferer
CustomLog referer.log referer env=!localreferer


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多