有时为了方便,我们需要自定义apache各虚拟主机的日志,以方便后续的日志分析工作。

常用的访问日志格式

通用日志格式(Common Log Format)

这是一个典型的记录格式:

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

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

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

组合日志格式(Combined Log Format)

另一种常用的记录格式是组合日志格式,形式如下:

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

多文件访问日志

可以简单地在配置文件中用多个CustomLog指令来建立多文件访问日志。如下例,既记录基本的CLF信息,又记录提交网页和浏览器的信息,最后两行CustomLog示范了如何模拟ReferLogAgentLog指令的效果。

LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access_log common
CustomLog logs/referer_log "%{Referer}i -> %U"
CustomLog logs/agent_log "%{User-agent}i"

此例也说明了,记录格式可以直接由CustomLog指定,而并不一定要用LogFormat起一个别名。

因此我们就可以在httpd.conf的<VirtualHost *:80></VirtualHost>标签里自定义自己的日志格式,而不需要系统的通用的日志格式。

管道日志

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

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

管道日志的一种重要用途是,允许日志滚动而无须重新启动服务器。为此,服务器提供了一个简单的程序rotatelogs 。每24小时滚动一次日志的例子如下:

CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/access_log 86400" common

注意:引号用于界定整个管道命令行。虽然这是针对访问日志的,但是其用法对于其他日志也一样。

在其他站点,有一个类似但更灵活的日志滚动程序叫cronolog 。

如果有较简单的离线处理日志的方案,就不应该使用条件日志和管道日志,即使它们非常强大。

同样我们也可以自定义日志格式如:

CustomLog "| /usr/sbin/rotatelogs -l /var/www/logs/my_access_log.%Y-%m-%d-%H_%M_%S 1800"   "%h %l %u %t \"%r\" %D  %>s %b \"%{Referer}i\""

详细内容请看: http://www.jinbuguo.com/apache/menu22/logs.html#page-header

另附日志格式中常用字符串:

格式字符串 描述
%% 百分号(Apache2.0.44或更高的版本)
%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的取值范围为:pidtid(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 根据UserCanonicalName指令设定的服务器名称。
%X 请求完成时的连接状态:

X= 连接在应答完成前中断。
+= 应答传送完后继续保持连接。
-= 应答传送完后关闭连接。

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

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

转载于:https://blog.51cto.com/470220878/1385024

apache自定义虚拟主机日志格式相关推荐

  1. 预习:11.16/11.17 Apache默认虚拟主机-11.24 静态元素过期时间

    预习: 11.16/11.17 Apache默认虚拟主机 11.18 Apache用户认证 11.19/11.20 域名跳转 11.21 Apache访问日志 11.22 访问日志不记录静态文件 11 ...

  2. LAMP(4)Apach和php结合、Apache默认虚拟主机

                            Apach和php结合 1.修改apache配置文件   vim /usr/local/apache2.4/conf/httpd.conf (1)修改S ...

  3. 11.14/11.15 Apache和PHP结合 11.16/11.17 Apache默认虚拟主机

    2019独角兽企业重金招聘Python工程师标准>>> 11.14-11.15 Apache和PHP结合 Apache(httpd)的配置文件:/usr/local/apache2. ...

  4. LAMP架构(apache与php结合,apache默认虚拟主机)

    一.apache与php结合 主配置文件/usr/local/apache2.4/conf/httpd.conf [root@localhost ~]# /usr/local/apache2.4/bi ...

  5. 浅谈构建 apache 2 虚拟主机[zt]

    浅谈构建 apache 2 虚拟主机无独有偶 于 2008-6-18,16:58 220 次阅读 相信架设 apache 2 服务器的linuxers不少吧,本人也是出于兴趣爱好,就自己学习架设了一下 ...

  6. apache开启虚拟主机localhost无法访问

    今天在集成环境下配虚拟主机,没想到虚拟主机开启后,localhost竟然无法访问了,解决办法是这样的: 实例一,Apache 配置localhost虚拟主机步骤 1,用记事本打开apache目录下ht ...

  7. Web服务器群集——编译安装Apache构建虚拟主机

    编译安装Apache构建虚拟主机 一.编译安装Apache 1.1 准备Apache源码包 1.2 解决Apache安装时的依赖关系 1.2.1 解决Apr依赖 1.2.2 解决Apr-util依赖 ...

  8. windows下apache配置虚拟主机的两个方法

    windows下apache配置虚拟主机方法一: 对httpd.conf进行设置: 1.注释以下三行 #ServerAdmin #ServerName #DocumentRoot 2.去掉mod_pr ...

  9. Apache配置虚拟主机三大问题--自己的相关坑

    Apache配置虚拟主机三大问题 第一大问题:配置失败 主要是apache 2.4以后配置步骤不再像以前那样了,正确步骤如下: 第一步:在httpd.conf中开启虚拟主机配置功能 #Include ...

最新文章

  1. 【Java】多线程相关复习—— 线程的创建、名字、运行情况以及顺序控制(join方法) 【一】...
  2. web.xml中web-app标签报错
  3. 如何创建你的第一个Python元类?
  4. 希尔排序python实现
  5. VTK:Texture之TexturedSphere
  6. IPv6 HSRP协议
  7. win 7更改计算机用户名和密码错误,win7系统一开机就显示用户名和密码错误故障的解决方法...
  8. 轻重在平衡:平衡查找树的强大威力
  9. BZOJ 2101: [Usaco2010 Dec]Treasure Chest 藏宝箱(这是我写过最骚气的dp!)
  10. dah计算机原理,卢伟计算机原理themicrocomputerprinciplech3.pptx
  11. 诡辩六论——微信陌陌如何话题不断的聊天
  12. 第一个小项目:学生成绩管理系统
  13. TAGS::Vim进阶索引[7]
  14. 西安健身房共享系统开发如何快速回笼资金?
  15. KEGG_cnetplot绘制基因—通路图(展示想要的通路)——R
  16. xss 全编码两次_XSS平台简单使用
  17. 【数字信号处理及MATLAB实践】
  18. html模板下载之“门户网站html模板页面下载”——html模板下载合集(持续更新中)
  19. cadence生成网表步骤
  20. 心系天下三星W23 | W23 Flip双旗舰折叠屏震撼发布

热门文章

  1. 浅谈面试中常考的两种经典布局——圣杯与双飞翼 1
  2. glyphicons-halflings-regular.woff2 文件 404
  3. python连接mysql的操作
  4. 怎样使用libmad
  5. mongoDB简单介绍及安装
  6. 手机摇一摇功能音量大小跟系统音量一致
  7. 《JavaScript面向对象精要》——1.2 原始类型
  8. [CentOs7]搭建ftp服务器(3)——上传,下载,删除,重命名,新建文件夹
  9. Macaca-iOS入门那些事2
  10. 聊Code review(上)