在文件夹下/var/log/httpd
,创建了巨大容量的文件!
我可以使用什么解决方案来自动压缩旧文件(可以logrotate
处理这个问题)?
如果是,如何配置Linux机器以压缩该文件夹下的旧文件?
第二个问题:这些文件的含义是什么?
13:16:50 root@BillGates-Machine:/var/log/httpd # ls -ltr
-rw-r--r-- 1 root root 7612 Jan 30 05:51 ssl_error_log-20160131
-rw-r--r-- 1 root root 16170199 Jan 31 03:29 ssl_request_log-20160131
-rw-r--r-- 1 root root 14677353 Jan 31 03:29 ssl_access_log-20160131
-rw-r--r-- 1 root root 425621646 Jan 31 03:38 access_log-20160131
-rw-r--r-- 1 root root 77267 Jan 31 03:38 error_log-20160131
-rw-r--r-- 1 root root 11233 Feb 7 03:43 ssl_error_log-20160207
-rw-r--r-- 1 root root 16398688 Feb 7 03:44 ssl_request_log-20160207
-rw-r--r-- 1 root root 14867381 Feb 7 03:44 ssl_access_log-20160207
-rw-r--r-- 1 root root 471057664 Feb 7 03:48 access_log-20160207
-rw-r--r-- 1 root root 101611 Feb 7 03:48 error_log-20160207
答案1
logrotate
可以压缩它轮换的文件,但是当应用程序写入的日志文件名不是静态时(由于文件名中的日期后缀,就像这里的情况一样),它不能很好地工作。如果您重新配置 HTTP 服务器(Apache?),使其不包含日期后缀(即它只会写入等),则access_log
可以使用。error_log
logrotate
这是一个示例解决方案,说明如何像这样配置它。
这是另一个相关问题,如果您希望保留日志文件命名方案,它也有一个解决方案。它不使用 logrotate,而是使用自定义脚本来完成该作业。
简而言之,这些文件的含义是
- access_log:成功的纯 HTTP 请求
- error_log:导致错误的纯 HTTP 请求
- ssl_request_log:成功的 HTTPS 请求
- ssl_error_log:导致错误的 HTTPS 请求
(当然你的配置可能会偏离这个逻辑)
答案2
您可以使用日志旋转。
一个示例应用程序配置设置是 dpkg(Debian 包管理系统),它存储在/etc/logrotate.d/dpkg
.该文件中的条目之一是:
/var/log/dpkg.log {
monthly
size 500M
rotate 12
compress
delaycompress
missingok
notifempty
create 644 root root
}
教程这里。
答案3
将压缩操作添加到 cron.将以下行添加到 root crontab ( sudo crontab -e
):
0 0 * * * tar -czf /var/log/httpd_backup_`date`.tar.gz /var/log/httpd && rm -rf /var/log/httpd/*
此命令将使用旧日志创建 tar 存档并删除现有日志。工作每天0点开始。