首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >日志旋转实际上是如何工作的

日志旋转实际上是如何工作的
EN

Stack Overflow用户
提问于 2021-08-10 07:01:19
回答 1查看 915关注 0票数 0

我正在尝试为httpd服务器设置日志,然后用/etc/logrotate.d/apache.conf编写一个脚本。

代码语言:javascript
复制
/var/log/httpd/* {
    daily
    rotate 3
    size 20K
    compress
    delaycompress
}

我从这个文件中了解到了什么

/var/log/httpd/* =将存储的所有日志都保存在何处,并希望对它们进行日志旋转

daily =当您想旋转日志时

rotate=只保留3个旋转日志

size =当日志文件大小满足此条件时

compress=生成一个旋转日志的压缩文件

delaycompress =某种压缩不知道多少

因此,我点击apache服务器生成大量日志。

在日志生成之后

我的日志在哪里存储它如何仅在大小条件匹配的情况下运行,或者感谢您的指导或帮助。

还有一件事,日志何时和如何旋转运行,为什么有些人建议将cron作业与logrotate一起使用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-12 22:24:21

我的日志存储在哪里?

除非指定olddir指令,否则它们将在它们存在的同一目录中旋转。

如何仅在大小条件匹配或其他情况下运行

如果指定size指令,则只有当日志大于该大小时才会旋转:

尺寸

只有当日志文件变大,然后大小为字节时,日志文件才会被旋转。

不满足大小要求的文件将被忽略(https://linux.die.net/man/8/logrotate)。

为什么有些人建议用cron作业来进行日志轮转

logrotate只是一个可执行文件;它不处理如何或何时执行它的任何方面。cron通常是调度logrotate执行的方式。例如,在CentOS上,/etc/cron.daily目录中有一个可执行的shell脚本:

代码语言:javascript
复制
#!/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执行的实际启动方式。

其他几个问题:

  1. /var/log/httpd/* --除非您使用olddir指令将文件从原始目录中旋转,否则永远不要用通配符(*)来结束日志旋转的目录定义。这个定义将覆盖到该目录中的每个文件,包括您已经旋转过的文件。Log转速无法跟踪哪些文件是实际的日志,哪些是存储的轮转。您的目录定义应该类似于/var/log/httpd/*_log

  1. 您应该在旋转日志文件之后重新加载httpd,否则它可能会继续登录到旋转的文件中,因为您从未关闭它的句柄。

httpd.service > /dev/null 2>/dev/null / true endscript

同样,这是一个特定于CentOS的例子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68722301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档