codecamp

Apache 日志格式

Apache日志提供有助于检测服务器常见问题的详细信息。要记录网站的访问日志,必须启用mod_log_configmodule。

apache配置文件中有三个指令,即 -

  • TransferLog:创建日志文件。
  • LogFormat:指定自定义格式。
  • CustomLog:创建和格式化日志文件。

TransferLog指令在apache配置文件中可用,它根据设置参数轮转虚拟主机日志文件。

<VirtualHost www.example.com>

  ServerAdmin webmaster@yiibai.com
  DocumentRoot /usr/www/example/httpd/htdocs/
  ServerName www.example.com
  ServerAlias example.com www.example
  ErrorLog /usr/www/example/httpd/logs/error_log
  TransferLog /usr/www/example/httpd/logs/accesslog
  CustomLog /usr/www/example/httpd/logs/accesslog combined

</VirtualHost>
Shell

两种类型的Apache日志格式

  • 通用日志格式
  • 组合日志格式

可以通过编辑apache配置文件来启用它们,即apache2.conf(Debian/ubuntu)或httpd.conf(基于rpm的系统)文件。

通用日志格式

LogFormat "%h %l %u %t \"%r\" %>s %b" common

CustomLog logs/access_log.log common
Shell

Apache生成的通用日志内容示例如下 -

[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/test
Shell

组合日志格式

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

CustomLog log/access_log.log combined
Shell

在上面格式中,

  • %h是远程主机
  • %l是由identd确定的用户的身份
  • %u是HTTP身份验证确定的用户名
  • %t是服务器处理完请求的时间。
  • %r是来自客户端的请求行(“GET/HTTP/1.0”)。
  • %> s是从服务器发送到客户端的状态代码(500,404等)
  • %b是客户端响应的大小(以字节为单位)
  • Referer是链接到此URL的页面。

用户代理是浏览器标识字符串。

Apache生成的组合日志:

199.180.11.91 - - [06/Mar/2019:04:22:58 +0100] "GET /robots.txt HTTP/1.1" 404 1228 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"
Shell

自定义日志为服务器上的每个虚拟主机创建单独的日志文件。它需要在配置文件的虚拟主机部分中指定。

可以看到下面提到的虚拟主机配置,生成的日志将为该虚拟主机自定义,并且将组合格式。




Apache Ruby支持
Apache 配置web服务器过程
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Apache 下载和安装

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }