apache日志格式详解(apache日志格式详解)

apache日志格式详解(apache日志格式详解)

扫码添加渲大师小管家,免费领取渲染插件、素材、模型、教程合集大礼包!

大家好,今天来介绍apache日志格式详解(apache log)的问题,以下是渲大师小编对此问题的归纳和整理,感兴趣的来一起看看吧!

APACHE 日志

apache的日志内容 无非 就是 请求时间 访问的客户端ip 请求访悄含问的 内容启胡笑, http状态码 客户浏览器等。
通过这个日志可以分析出网站的访问量,被访问的url 访问量 频率。
分析这个文件做帆的软件有 awstat 这样的工具。

apache的log机制

Apache访问日志配置

访问日志格式分类

apache中日志记录格式主要有两种,普通型(common)和复合型(combined),安装时默认使用普通型(common)类型日志记录访问信息锋喊。

配置Apache访问日志格式命令及参数

配置Apache访问日志格式主要有两个参数,即LogFormat指令和CustomLog指令

LogFormat指令:定义格式并为格式指定一个名字,以后我们就可以直接引用这个名字。
CustomLog指令:设置日志文件,并指明日志文件所用的格式(通常通过格式的名字)。

在apache的配置文件httpd.conf中冲好,有几行是这么配置的:

CopyLogFormat "%h %l %u %t "%r" %>s %b" common定义普通日志的格式和名字
CustomLog "logs/access.log"common普通日志的保存位置 。《Linux 就该这么学》

设置apache的日志切散基铅割

#编辑配置文件 vim /usr/local/apache2/etc/httpd.conf#将ErrorLog "logs/error_log"注释掉添加:

ErrorLog "/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/error_%Y%m%d.log 86400"

#将ErrorLog "logs/access_log"注释掉添加:

CustomLog "/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/access_%Y%m%d.log 86400" combined

#将日志交给apache自带的切割工具rotatelog,-l是校准北京时间,日志的格式为 *_年与日.log 每天生成一个日志文件

windows下怎么分析apache日志

Apache 的标准中规定了4类日志:

错误日志
访问日志
传输日志
Cookie日志

其中:传输日志和Cookie日志被Apache 2.0认为已经过时。所以本节仅仅讨论错误日志和访问日志。同时错误日志和访问日志被Apache 2.0默认设置。
能从日志中获取哪些信息

* 访问日志
o 访问服务器的远程机器的地址:可以得知浏览者来自何方
o 浏览者访问的资源:可以得知网站中的哪些部分最受欢迎
o 浏览者的浏览时间:可以从浏览时间(如工作时间或休闲时间)对网站内容进行调整
o 浏览者使用的浏览器:可以根据大多数浏览者使用的浏览器对站点进行优化
* 错误日志
o 获知失效链接
o 获知 CGI 错误
o 获知用户认证错误

配置错误日志

错误日志记录了服务器运行期间团蚂遇到的各种错误,以及一些普通的诊断信息,比如服务器何时启动、何时关闭等。
错误日志配置指令
ErrorLog

ErrorLog 指令指定了当服务器遇到错误时记录错误日志的文件名。其格式为:

格式1:ErrorLog 错误日志文件名
格式2:ErrorLog "管道程序名"

格式1直接指定错误日志文件名,除非文件位置用”/“开头,否则 ErrorLog 所制定的文件位置是相对于 ServerRoot 目录的相对路径。

格式2实现管道日志,它指定一个命令来处理错误日志。
Apache 编译时默认的错误日志可以使用如下命令获得:

$ apache2 -V grep DEFAULT_ERRORLOG
-D DEFAULT_ERRORLOG="logs/error_log"

LogLevel

LogLevel 用于调整记于错误日志中的信息的详细程度。其格式为:

LogLevel 错误日志记录等级

下面着重说说日志记录等级:
紧急程度 等级 说明
1 emerg 出现紧急情况使得该系统不可用,如系统宕机等
2 alert 需要立即引起注意的情况
3 crit 危险情况的警告
4 error 除了emerg、alert、crit的其他错误
5 warn 警告信息
6 notice 需要引起注意的情况,但不如error、warn重要
7 info 值得报告的一般消息
8 debug 由运行于debug模式的程序所产生的消息

如拿或型果指定了等级 warn,那么就记录紧急程度为1至5的所有错误信息。
Ubuntu 中 Apache 的错误日志配置

配置错误日志相对简单,只要说明日志文件的存放路径和错误日志记录等级即可。

从 Ubuntu 中的 /etc/apache2/apache2.conf 中可知,默认的错误日志存放在 /var/log/apache2/error.log

ErrorLog /var/log/apache2/error.log
LogLevel warn

您可以在 /etc/apache2/apache2.conf 中设置错误日志记录等级,也可以在相应的虚拟主机的配置文件中设置。
错误日志文件消猜举例

下面是一个错误日志文件的截取。

$ sudo tac /var/log/apache2/error.log
[Wed Jun 20 14:53:15 2007] [error] [client 192.168.0.66] File does not exist: /usr/share/phpmyadmin/favicon.ico
[Wed Jun 20 11:12:50 2007] [notice] Apache/2.0.55 (Ubuntu) DAV/2 SVN/1.3.1 mod_python/3.1.4 Python/2.4.3 PHP/5.1.2 configured -- resuming normal operations
[Wed Jun 20 11:12:49 2007] [notice] Digest: done
[Wed Jun 20 11:12:49 2007] [notice] Digest: generating secret for digest authentication ...
[Wed Jun 20 09:22:22 2007] [notice] caught SIGTERM, shutting down

从文件内容可以看出,每一行记录了一个错误。格式为:

日期和时间 错误等级 错误消息

配置访问日志
CustomLog

CustomLog 指令用来对服务器的请求进行日志记录。格式为:

格式1:CustomLog 访问日志文件名 记录格式说明串格式昵称
格式2:CustomLog "管道程序名 访问日志文件名" 记录格式说明串格式昵称

其中:

1. 访问日志文件名:除非文件位置用”/“开头,否则所制定的文件位置是相对于 ServerRoot 目录的相对路径
2. 格式昵称:使用 LogFormat 指令将一个记录格式说明串赋以一个名称
3. 记录格式说明串:用字符串和格式说明符(以%开头)指定日志记录的内容
4. 管道程序名:管道符””后面紧跟着一个程序的路径,这个程序把日志从标准输入设备中读入并处理。

在 Ubuntu 的 Apache 默认配置中并没有使用 CustomLog 设置访问日志,若您希望记录访问日志,您需要在虚拟主机的配置文件中分别设置,例如:在 /etc/apache2/sites-available/default 中有如下的设置:

CustomLog /var/log/apache2/access.log combined

LogFormat

为了便于分析 Apache 的访问日志,Apache 的默认配置文件中,按记录的信息不同(用不同格式昵称说明不同的信息)将访问日志分为4类,并由 LogFormat 指令定义了昵称,如表所示。
格式分类 格式昵称 说明
普通日志格式(common log format,CLF) common 大多数日志分析软件都支持这种格式
参考日志格式(referer log format) referer 记录客户访问站点的用户身份
代理日志格式(agent log format) agent 记录请求的用户代理
综合日志格式(combined log format) combined 结合以上三种日志信息

LogFormat 指令用于定义访问日志的记录格式。格式为:

LogFormat "记录格式说明串" 格式昵称

从 /etc/apache2/apache2.conf 中可知,在 Ubuntu 的 Apache 中定义了下面的 4 种类型的访问日志:

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

由于综合日志格式简单地结合了3种日志信息,所以在配置访问日志时,要么使用一个综合文件进行记录,要么使用分离的多个(1-3)文件记录。通常使用一个综合日志格式文件进行记录,配置为:

CustomLog /var/log/apache2/access.log combined

若使用3个文件分别进行记录,配置为:

CustomLog /var/log/apache2/access.log common
CustomLog /var/log/apache2/referer.log referer
CustomLog /var/log/apache2/agent.log agent

下面的指令组:

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"

通常我们配置访问日志时,使用先使用 LogFormat 指令定义格式昵称,然后再在 CustomLog 指令中引用昵称的方法。
格式说明符

在使用 LogFormat 和 CustomLog 指令中为了说明要记录的日志内容,可以使用的常用格式说明符如下表。
格式说明符 说明
%v 进行服务的服务器的标准名字 ServerName,通常用于虚拟主机的日志记录中。
%h 客户机的 IP 地址。
%l 从identd服务器中获取远程登录名称,基本已废弃。
%u 来自于认证的远程用户。
%t 连接的日期和时间。
%r HTTP请求的首行信息,典型格式是“METHOD RESOURCE PROTOCOL”,即“方法 资源 协议”。经常可能出现的 METHOD 是 GET、POST 和 HEAD;RESOURCE 是指浏览者向服务器请求的文档或 URL;PROTOCOL 通常是HTTP,后面再加上版本号,通常是 HTTP/1.1。
%>s 响应请求的状态代码,一般这项的值是 200,表示服务器已经成功地响应浏览器的请求,一切正常;以 3 开头的状态代码表示由于各种不同的原因用户请求被重定向到了其他位置;以 4 开头的状态代码表示客户端存在某种错误;以 5 开头的状态代码表示服务器遇到了某个错误。
%b 传送的字节数(不包含HTTP头信息),将日志记录中的这些值加起来就可以得知服务器在一天、一周或者一月内发送了多少数据。
%{Referer}i 记录引用此资源的网页。
%U 请求的URL路径,不包含查询串。
%{User-Agent}i 使用的浏览器信息。
访问日志文件举例

由于整个格式说明字符串是放在”“之内的,所以若要输出的日志信息内含有引号,需要将”前加转义符\。例如:若要输出子串”GET /apache_pb.gif HTTP/1.0”,则格式字符串为\”%r\”。

如何定义APACHE日志内容之间的分隔符

自定义分隔符
1.日志格式
2010-05-31 10:50:1761.132.4.82http://www.360buy.com/product/201185.html
分宴册隔符是“ ” 2.创建自定义分隔符核祥伍的数据表CREATE TABLE click_test ( time string, ip string, url string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '' STORED AS TEXTFILE;
3.加载数据LOAD DATA LOCAL INPATH '/data/clicktest_20110217.txt' OVERWRITE INTO TABLE click_test;
4.查询数据select * from click_test;
处理Apache日志 1.日志格式127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700]"GET /apache_pb.gif HTTP/1.0"200 2326
2.创建数据库 CREATE TABLE apachelog ( host STRING, identity STRING, user STRING, time STRING, request STRING, status STRING, size STRING, referer STRING, agent STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' WITH SERDEPROPERTIES ( "input.regex"="([^ ]*) ([^ ]*) ([^ ]*) (-\[[^\]]*\]) ([^ "]*"[^"]*") (-[0-9]*) (-[0-9]*)(?: ([^ "]*".*") ([^ "]*".*"))?", "改或output.format.string"="%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s %9$s" ) STORED AS TEXTFILE; 3.加载数据hive> LOAD DATA LOCAL INPATH"./examples/files/apache.access.log"INTO TABLE apachelog;
hive> LOAD DATA LOCAL INPATH"./examples/files/apache.access.2.log"INTO TABLE apachelog;
4.查询数据hive> select * from apachelog order by time;
使用order by查询后,会报错:Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.contrib.serde2.RegexSerDe

at java.net.URLClassLoader$1.run(URLClassLoader.java:202)

at java.security.AccessController.doPrivileged(Native Method)
启动时,需要添加hive_contrib.jarhive --auxpath ./hive/lib/hive_contrib.jar

如何分析apache日志access

默认Apache运行会access_log(访问日志)和error_log(错误日志)两个日志文件。

看一条典型的access_log的日志记录:

61.155.149.20 - - [17/Dec/2013:05:42:47 +0800] "GET /category/db/ HTTP/1.1" 200 23225

1)61.155.149.20 这是一个请求到apache服务器的客户端ip,默认的情况下,第一项信息只是远程主机的燃陪ip地址,但我们如果需要apache查出主机的名字,可以将 HostnameLookups设置为on,不推荐使用,会大大降低网站速度。

2) - 这一项是空白,使用"-"来代替,用于记录浏览者的标识,对于大多数浏览器,这项都是空。

3) -也为空,记录浏览者进行身份验证时提供的名字,大多数这项也为空。

4) [17/Dec/2013:05:42:47 +0800]第四项是记录请求的时间,格式为[day/month/year:hour:minute:second zone],最后的+0800表示服务器所处的时区为东八区

5) "GET /category/db/ HTTP/1.1" 这一项最有用,首先,它告诉我们的服务器收到的是一个GET请求,其次,是客户端请求的资源路径,第三,客户端使用的协议时HTTP/1.1,整个格式为"%m %U%q %H",即"请求方法/访问路径/协议"

6) 200 这是一个状态码,由服务器端发送回客户端,它告诉我们客户端的请求是否成功,或者是重定向,或者是碰到了什么样的错误,这项值为200,表判段巧示服务器已经成 功的响应了客户端的请求,一般来说,这项值以2开头的表示请求成功,以3开头的表示重定向,以4开头的标示客户端存在某些的错误,以5开头的标示服务器端 存在某些错误。

7) 23225 这项表示服务器向客户端发送了多少的字节,在日志分析统计的时侯,把这些字节加起来就可以得知服务器在某点时间内总的发送数据量是多少

再来看一条error_log信息:

[Tue Dec 17 02:22:46 2013] [error] [client 61.182.137.33] File does not exist: /var/www/html/usr/themes/dddefault/all.txt

1) [Tue Dec 17 02:22:46 2013] 记录错误发生的时间,注意,它跟我们上面access_log记录的时间格式是不同的

2) [error] 这一项为错误的级别,根据LogLevel指令来控制错误的类别,上面的404是属于error级别

3) [client 61.182.137.33] 记录客户端的ip地址

4) File does not exist: /var/www/html/usr/themes/dddefault/all.txt 错误掘键描述。

分享到 :
相关推荐

微信小程序云服务器租用要多少钱

现在小程序是越来越流行。如果公司没有小程序。那都只能算是个体户。既然小程序那么重要。...

Ubuntu服务器安装配置Rundeck教程(ubuntu 安装run)

Rundeck是一个基于Java和Grails的开源的运维自动化工具。提供了Web管...

polardbmysql需要分库分表吗(分表 mysql)

大家好,今天来介绍polardbmysql需要分库分表吗(mysql为什么分库分表)...

为什么选择租用美国高防服务器

具体内容如下:一。美国是互联网的诞生地。全球互联网的骨干部分都是在这的。全球各地的[...

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注