apache上跑的日志一直没有去管。基本就是一个文件走天下,好处在于不需要再去其它地方找了,找一个文件就好了。问题在于日志越来越大,打开查看就要好几十分钟了,要具体的查询某一个时间点的日志再去分析——这基本上属于不可能的工作。So,这个工作到了必须要处理一下的时候了。

其实这个事情已经开始几天了,但年纪大了学东西有点慢,又不愿意搞个半懂不懂。所以可能会有点慢。分上下两部分吧。

这一部分主要讲配置和模板的格式分析。

一、最简单的apache日志设置。

直接在虚拟主机设置里添加

ErrorLog "/路径/error_log"
CustomLog "/路径/access_log" common

即可针对每个虚拟主机设置单独的日志文件。

不过问题是,这还是仅仅是把单个虚拟主机的日志从总体日志里分离出来,要具体管理还是不可能。

二、对日志进行分割管理

apache提供了日志管理程序rotatelogs,主要用来把日志文件分割管理。

这个命令提供了两种分割的方法,

第一种是按时间,以秒为基准算的,86400就是一天。

第二种是以文件大小,给出的例子是5M。

正常情况下一般是采用日期对日志进行管理的。所以在虚拟主机配置中加入以下的设置

ErrorLog "|  /apache安装路径/bin/rotatelogs  /路径/%Y_%m_%d_error_log 86400 480"
CustomLog "|  /apache安装路径/bin/rotatelogs  /路径/%Y_%m_%d_access_log 86400 480" common

%Y,%m,%d这三个都很明显,分别表示的是年月日。

在86400后面的480其实是UTC的时间偏移量,毕竟我们的时区是东八区和日界线UTC时间差了八小时,如果没有写480,会按最原始的时候进行分割,这和我们要记录的时间不一样。这里的时间单位是分钟,8小时,即480分钟。

common,其实是access_log的模板名称。这个在http.conf文件里有记录。规定了access_log文件的记录格式。如:

OK,保存好配置之后,重启apche,对相对应的虚拟主机访问一下,日志文件就会产生了。

三、关于模板的解读和access_log记录的对照分析。

下面分析一下access_log和error_log两个日志的内容,毕竟日志写了如果看不懂基本等于无用功。

先access_log,没别的,这个文件有一个默认模块,识图认字比较容易。

common模板(好吧。再出现一次)

如上所示。我们对上面八个选项逐个分析,分别是:

%h,%l,%u,%t,%r(不是\"%r\",那两个\其实就是转译符,两个"是当字符出现的),%>s,%b

%h  主要显示的是访问的域名/IP,一般来说是IP地址

%l   远程登录的名字,不过是由identd提供,所以一般都是空

%u  登录用户,这个有可能不是空,但我没见过

%t   这个是访问时间

%r  这个是访问的方法+资源+协议,有点难懂吧?等下看过日志就明白了,不过看过之后更加不明白了。

%>s  内部重定向的请求,如果没加>是原来的请求,加了>是后来的请求。比如200是确认的正常返回码,404是页面无法访问

%b  已经发送的字节数(这个最好懂)

OK。进入日志具体分析

115.236.140.12  -  -  [07/Jan/2016:11:21:41 +0800]  "GET  /   HTTP/1.1"  200  1933

以此条日志信息为例,得出的日志分析是

115.236.140.12  在   北京时间(+0800)  2016年1月07日,上午11:21:41 访问了站点的 / 协议为HTTP/1.1 请求状态码是200,已发送字节 1933。

这里除了登录用户名(第三项)为空之外(第二个远程登录名一般是由identd提供的邮箱,常年为空,当不存在了),其它的都好理解,相对比较麻烦的就是  访问的方法+资源+协议这项,即 "GET  /   HTTP/1.1"  。其实协议也好办,最难理解的是第一个方法,这整个一项也是日志最核心的东西——也就是对方到底做了什么。

分析如下的日志

第一行,其实是我对站点进行访问——自然也就访问了站点的 / ,所以这里用方法是GET,因为是访问所以发出的字节是 1933

第二行,是我在页面登录,提交了登录信息。这里很奇怪没有登录用户名,但可以看到方法已经变成了POST,访问是资源是/index.php——其实就是在index.php。由于是提交所以发出的字节是0。(之前传出的1933,应该就是index.php)

而登录完成之后的日志如下:

系统后来直接跳转访问的其它页面陆续出来,不过用的也是方法GET。

不过方法GET并不仅仅表示系统对页面的直接访问和加载,其实更直接的是对某个页面的直接访问,这个无论是系统还是其它人为。为什么这么说?因为网络还是很危险的,某位朋友对我的服务器好像采取了摸鱼式的扫描。

用的自然也是GET方法。当然,这些最后返回的全是404,网络世界真可怕。

从这几天的观察,方法值在GET居多,POST时有,还出现CONNECT和HEAD,但是还出现了一个不知道什么鬼的\x16\x03\x03\x03\x0c\x01。

现在POST和GET 方法内容基本清楚,CONNECT,HEAD还有\x16\x03\x03\x03\x0c\x01,以及还未出现的其它方法,估计要查询之后再才能得出答案。

error_log

这个文件的格式是固定的,相对简单一点

错误时间    错误类型   对方地址   具体的错误信息

前面这三个基本上一目了然,最关键的最后后的具体错误信息,一天之内找到了如下的几个

File does not exist:   这种一般是找不到文件,后面接的一般是服务器内真实的绝对路径。

script 'XXX.php' not found or unable to stat  这种和上面差不多都是找不到文件,但文件脚本本身是apache可以加载识别的

client denied by server configuration  这种错误一般和服务器的配置有关,错误都比较直接可以很快找到问题所在。但要明白的是,如果是配置过而错误,那是配置的问题;如果没有配置还出现错误,那就是被人家扫描了。

还有两个不知道什么意思:

client sent HTTP/1.1 request without hostname

Invalid URI in request \x16\x03\x01\x03\x0c\x01

这一节大概到这里吧。大概搞清了日志的分割设置方法和基本的解读。下一节分析一下模板的可选项,自己做一个模板然后是日志的备份。

关于apache的日志配置和模板格式分析相关推荐

  1. apache php日志配置,HTML_初学:apache与php基本配置,1、APACHE的日志主要分为“ - phpStudy...

    1.APACHE的日志主要分为"错误日志"与"访问日志". 2.apache错误日志目录的设置:/etc/apache2/apache2.conf   约170 ...

  2. apache php日志配置,如何设置apache每天保存日志

    由于工作需求,需要设置apache日志按每天的方式保存,现在将具体方法分享出来,以供大家参考. 一.查找rotatelogs rotatelogs是apache自带的日志按日期生成的模块,具体位置已自 ...

  3. Apache经常使用配置

      Apache採用IBM HTTPServer,内核为Apache/2.0.47 Server version: IBM_HTTP_Server/6.1.0.13 Apache/2.0.47   查 ...

  4. python网站访问日志分析_python分析apache网站日志web日志的代码

    python分析apache网站日志的代码 1.分析日志的python框架awk.py 代码示例: # # Custom awk.py module # class controller: def _ ...

  5. Apache日志配置参数说明

    from: http://www.yanghengfei.com/archives/285/ 在apache的配置文件httpd.conf里默认有这么一句配置  logformat "%h ...

  6. Apache(httpd)配置--用户认证,域名跳转和访问日志配置

    一.用户认证 用户认证功能就是在用户访问网站的时候,需要输入用户名密码才能进行访问.一些比较好总要的站点和网站后台都会加上用户认证,以保证安全. 实例:下面对zlinux.com站点来做一个全站的用户 ...

  7. Apache日志配置

    有时候我们需要定制Apache默认日志的格式和内容,比如增加或减少日志所记录的信息.改变默认日志文件的格式等.本文介绍可以用日志 记录的所有信息,以及如何设置Apache使其记录这些信息. 一.定义日 ...

  8. Apache日志配置详解(rotatelogs LogFormat)

    logs/error_log CustomLog logs/access_log common --默认为以上部分 修改为如下: ErrorLog "|/usr/sbin/rotatelog ...

  9. Apache 日志配置,包含过滤配置

    最近排查支付宝交易成功后异步通知执行失败的原因,需要查看Apache的日志,发现之前一直没对日志进行设置,结果日志文件都1.5G多了,于是搜索了如何按天记录日志. 但公司的网站是通过阿里云的SLB分发 ...

最新文章

  1. yii2.0使用ueditior完成上传单张,多张图片,上传视频等操作
  2. python创建单例模式_Python单例模式的四种创建方式实例解析
  3. java 高效文本查找替换_Java 查找、高亮PDF 文本
  4. 《是碰巧还是执着?python所阅读的每一场知识点,唯一的共同点就是——参赛选手中,有python之socket编程!》
  5. 使用Adreno Profiler分析android游戏
  6. KingDZ 变菜鸟,每日一个C#小实例之---玩转鼠标
  7. vue 如何清除浏览器的内存_浏览器垃圾回收机制与 Vue 项目内存泄漏场景分析
  8. element-ui的pagination分页 增加首页和末页
  9. keil5手动下载并添加pack
  10. QWidget setStyleSheet无效
  11. 你以为打上马赛克就安全了吗?用Python一键还原,了解一下?
  12. 超级直播对接骆驼后台IPTV管理,只精简保留和修改TV相关的后台,骡马TV
  13. CS224n Assignment4解读 · 上
  14. 【UOJ455】【UER #8】雪灾与外卖
  15. 大唐移动android面试题,大唐移动面试经验
  16. Zemax操作35--双高斯镜头优化
  17. colorkey口红怎么样_colorkey口红推荐什么颜色
  18. 政权更迭最频繁的魏晋南北朝
  19. Linux下安装Redis详细步骤具体教程
  20. VScode中npm install报错

热门文章

  1. “旧爱”难断,雀巢能否借区块链一斩红尘?
  2. 2021年GitHub上那些优秀Android开源库总结,全套教学资料
  3. MultipartFile格式转File
  4. 输入一个字符串,内有数字和非数字字符,例如A123x456 17960? 302tab5876,将其中连续的数字作为一个整数,依此存放到一个数组a中。
  5. Java高频面试题汇总(2022)
  6. 【愚公系列】2022年09月 微信小程序-实现直播功能
  7. DE2-115驱动问题
  8. 2022-2028全球与中国数码摄像机市场现状及未来发展趋势
  9. 重生之我要学习C++_Day1
  10. 十二、俄罗斯方块代码拆分