我正在尝试为httpd服务器设置日志,然后用/etc/logrotate.d/apache.conf编写一个脚本。
/var/log/httpd/* {
daily
rotate 3
size 20K
compress
delaycompress
}我从这个文件中了解到了什么
/var/log/httpd/* =将存储的所有日志都保存在何处,并希望对它们进行日志旋转
daily =当您想旋转日志时
rotate=只保留3个旋转日志
size =当日志文件大小满足此条件时
compress=生成一个旋转日志的压缩文件
delaycompress =某种压缩不知道多少
因此,我点击apache服务器生成大量日志。

在日志生成之后

我的日志在哪里存储它如何仅在大小条件匹配的情况下运行,或者感谢您的指导或帮助。
还有一件事,日志何时和如何旋转运行,为什么有些人建议将cron作业与logrotate一起使用。
发布于 2021-08-12 22:24:21
我的日志存储在哪里?
除非指定olddir指令,否则它们将在它们存在的同一目录中旋转。
如何仅在大小条件匹配或其他情况下运行
如果指定size指令,则只有当日志大于该大小时才会旋转:
尺寸
只有当日志文件变大,然后大小为字节时,日志文件才会被旋转。
不满足大小要求的文件将被忽略(https://linux.die.net/man/8/logrotate)。
为什么有些人建议用cron作业来进行日志轮转
logrotate只是一个可执行文件;它不处理如何或何时执行它的任何方面。cron通常是调度logrotate执行的方式。例如,在CentOS上,/etc/cron.daily目录中有一个可执行的shell脚本:
#!/bin/sh
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0这个脚本每天由cron执行一次,也是logrotate执行的实际启动方式。
其他几个问题:
/var/log/httpd/* --除非您使用olddir指令将文件从原始目录中旋转,否则永远不要用通配符(*)来结束日志旋转的目录定义。这个定义将覆盖到该目录中的每个文件,包括您已经旋转过的文件。Log转速无法跟踪哪些文件是实际的日志,哪些是存储的轮转。您的目录定义应该类似于/var/log/httpd/*_log。。
httpd,否则它可能会继续登录到旋转的文件中,因为您从未关闭它的句柄。httpd.service > /dev/null 2>/dev/null / true endscript
同样,这是一个特定于CentOS的例子。
https://stackoverflow.com/questions/68722301
复制相似问题