对Apache日志文件的build议

我有一个小的VPS,一个朋友,我用它来主办几个网站。 我们对服务器pipe理相对缺乏经验,并且不确定处理Apache生成的日志的有效方法。

每个站点在与以下目录结构类似的目录结构中生成它自己的日志文件:

/var/www/{user]/{sitename}/logs 

问题是,其中一些变得相当大(300mb)。 我正在考虑安装logrotate来帮助处理这个大小的问题。 但是,我不确定是否有效处理日志,因为这些日志并不是关键站点,因此我认为日志不是那么重要。

build议使用日志的做法是什么? 你对这些事情有什么build议/意见?

Logrotate是最好的select。 由于日志的大小越来越大,您可以使用logrotate来显着压缩日志。 假设你使用apache修改如下

vi /etc/logrotate.d/httpd

你会希望它看起来像这样:

 "/var/log/httpd/site1/*.log" "/var/log/httpd/site2/*.log" { weekly rotate 7 compress missingok notifempty sharedscripts postrotate /sbin/service httpd reload > /dev/null 2>/dev/null || true endscript } 
  • 每周 :如果当前工作日小于上一次轮换的周日,或者如果自上次轮换以来已超过一周,则日志文件将被轮换。
  • 旋转7 :日志文件被移动52次,然后被移除或邮寄到邮件指令中指定的地址。 如果count为0,旧版本将被删除而不是旋转。
  • 压缩 :旧版本的日志文件使用gzip压缩以节省磁盘空间。
  • Missingok :如果日志文件丢失,请继续进行下一个操作,而不发出错误消息。
  • Notifempty :如果日志为空,则不要旋转日志
  • Sharedscripts :通常情况下, 轮转的每个日志都会运行prerotatepostrotate脚本,这意味着对于与多个文件匹配的日志文件条目,单个脚本可能会运行多次。 如果指定了sharedscript,那么脚本只运行一次,而不pipe有多less个日志与通配符匹配。 但是,如果模式中的日志都不需要旋转,则脚本根本不会运行。
  • Postrotate / sbin / service httpd reload> / dev / null 2> / dev / null || 真正
  • Endscriptpostrotate和endscript之间的行(两者必须自行出现)在日志文件旋转后执行。 这些指令只能出现在日志文件定义中。

编辑:作为卢卡斯提到: 另一件你可能想要检查出来的是为什么你的日志填满 。 这可以指向一些不好的代码,也可能是有人试图做一些恶意的,即通过forms等

如果你需要更多的信息,只需使用选项

人logrotate

我确实会使用logrotate,压缩后你的300 MB将会变成8 MB。 您还可以编写脚本,以便您可以每隔一段时间将压缩的日志备份到远程服务器(或其他备份驱动器),然后删除这些日志。

如果网站不重要,可以在一段时间之后丢弃日志(由您决定何时认为自己不再有用)。

另一件你可能想看看的是为什么你的日志正在填满。 您的代码中可能会有一些警告,可以很容易地修复或只是不必要的debugging信息。