Articles of logrotate

系统日志的旋转

我写了一个小的c应用程序,它使用syslog c接口来写信息(从man 3 syslog): void openlog(const char *ident, int logopt, int facility); void syslog(int priority, const char *message, …); void closelog(void); 我的问题是:我在/var/log/local0.log写消息给LOCAL0。 我也有cron在/var/log/local0.log上调用logrotate。 我注意到,在轮换之后,我的应用程序继续写入被轮换出来的文件,而不是新的/var/log/local0.log 。 用postrotate脚本解决这个问题的最好方法是什么? 容易,但不理想:完全重新启动rsyslog守护进程。 在我的应用程序中发送和处理SIGHUP。 这似乎是最合适的解决scheme。 但是我不确定当我得到HUP时我需要做什么。 我只需要调用closelog()然后openlog()?

httpd的Logrotateconfiguration(CentOS)

我在CentOS 5.5上运行Apache 2.2.3,并在/etc/logrotate.d/httpd中注意到以下的logrotate postrotateconfiguration: postrotate /sbin/service httpd reload > /dev/null 2>/dev/null || true endscript 由于这个设定每星期运行一次,所以它为Apache做了一个很难重新加载的工作,这看起来会杀死所有的连接(对吗?我不是专家)。 将postrotate脚本改为正常重启会更安全吗? /usr/sbin/apachectl graceful > /dev/null 这是我已经为我的虚拟主机的postrotate行为。 我不明白为什么httpd旋转脚本需要重新加载。 任何build议如何正确configuration这将不胜感激。 谢谢,拉尔夫

防止logrotate的dateext覆盖文件

我正在使用一个系统,我想使用logrotate的dateext函数(或其他方式)在日志文件旋转时添加date。 但是在这个系统中,重要的是不要logging日志,dateext将覆盖任何现有的文件(如果logrotate每天被调用两次,将会发生这种情况)。 有一个可靠的方法来防止dateext覆盖现有的文件,而是做另一个文件? 可以接受的是,不发生旋转,或者使用不太可预测的名称创build文件(具有额外数​​字的date,或时间或某物)。

为什么logrotate删除我的日志?

这是我的conf: /var/log/apache2/*.log { weekly missingok rotate 52 compress delaycompress notifempty create 640 root adm sharedscripts postrotate if /etc/init.d/apache2 status > /dev/null ; then \ /etc/init.d/apache2 reload > /dev/null; \ fi; endscript prerotate if [ -d /etc/logrotate.d/httpd-prerotate ]; then \ run-parts /etc/logrotate.d/httpd-prerotate; \ fi; \ endscript } 如果我正确地做了,它应该保留52周的价值logging(包装),但是每个星期后都会被删除。 我有2个虚拟主机,一个是www,另一个是testing子域。 这是我告诉我的网站从站点启用conf进行login。 <VirtualHost *:80> ServerAdmin [email protected] ServerName test.xxx.com […]

如何在logrotateconfiguration文件中使用通配符

我有以下configuration不工作: 1)在Centos 5中使用rsyslog。2)在/etc/logrotate.d中我有文件sj-piers-logs。 SJ-PIERS – 日志: /syslogrep/sjpiers-logs/0* { weekly missingok notifempty dateext copytruncate compress olddir /syslogbackup/sjpiers-logs/backup rotate 96 } 4)logrotate.conf具有默认configuration: LOGROTATE.CONF weekly rotate 4 create include /etc/logrotate.d /var/log/wtmp { monthly minsize 1M create 0664 root utmp rotate 1 } 5)系统日志由networking设备发送到/ syslogrep。 我想旋转日志文件,压缩并将其移动到/ syslogbackup。 我被告知,错误驻留在sj-piers-logs文件中使用通配符,但似乎可以根据手册页使用它们。 我做错了什么?

logrotate旋转它们后,日志文件变空白

我有一个运行openvpn的Ubuntu 8.04 LTS服务器。 openvpn服务器写入/ var / log下的标准日志文件,在一个月前,logrotate会自动旋转文件并压缩它们。 文件仍在旋转,但是新的日志文件(ovpn.log)是空的。 重新启动openvpn守护进程可以解决问题(例如:openvpn将状态事件写入文件),但是大约10天后文件再次被轮转,openvpn不能再次写入日志文件。 这也是奇怪的,因为logrotate设置为每6个月旋转一次。 Openvpn作为nobody运行,并且日志文件由root和admin拥有,这很奇怪,因为它应该在任何时候都工作,或者如果权限是原因,根本不工作,除非openvpn暂时作为root运行,然后在初始化之后下降到没有人?

使用rsyslog进行日志旋转的原因?

使用rsyslog的旋转能力比标准/ sbin / logrotate有什么好处?

我如何告诉logrotate用cron旋转哪些文件?

在我的web服务器上,我有这个文件: /etc/logrotate.d/apache2 我知道这是logrotating /var/log/apache2/ .log ,但是如果我想添加/usr/home/www/site1/logs/ .log东西,我只复制下面的所有内容并将其粘贴在那里? 每次我添加一个新的网站,我需要手动添加行到这个文件? 或者什么是最专业的方式来做到这一点? /var/log/apache2/*.log { 每周 missingok 旋转52 压缩 delaycompress notifempty 创build640根adm sharedscripts postrotate 如果[-f“`。/ etc / apache2 / envvars; echo $ {APACHE_PID_FILE: – / var / run / apache2.pid}`”]; 然后 /etc/init.d/apache2 reload> / dev / null 科幻 endscript }

nginx日志每周轮转失败,我怎么确定为什么?

在我安装了nginx之后,它的日志每周周转一周,周日00:00 然而本周日志未能旋转,我不知道为什么。 我能想到的唯一影响就是我做了一个apt-get升级。 这很顺利,只有一个configuration文件需要手动合并。 我找不到任何logrotate本身的日志。 看起来好像我期望在/ var / syslog中看到logrotate cron作业的内容,但是没有任何内容(曾经)。 其次,logrotate似乎已经正确configuration了nginx。 有一个nginxconfiguration文件,在logrotate.d中看起来不错 logrotate cron作业也在/etc/cron.daily中 感谢任何帮助 – 寻找之前可能已经工作,但突然停止,或从哪里寻找从cron或logrotate本身的任何额外的日志logging输出的原因。

Logrotate:旋转特定大小的所有日志文件并每小时旋转一次

我在Ubuntu的logrotate文件每天运行。 我想确保它的旋转日志文件在每个小时得到没有完整的磁盘错误了。 所以我的logrotate文件是在cron.daily文件夹中,简单地移动到cron.hourly就足够了吗? 我也想保持我的最大日志文件大小在5MB,但林不知道该怎么改变在logrotate.cnf。 logrotate.cnf内容(不含换行符): 每周轮换4次创buildinclude /etc/logrotate.d / var / log / wtmp {missingok每月创build0664根utmp旋转1} / var / log / btmp {missingok每月创build0660根utmp旋转1} 我知道我必须使用5M大小 ,但我应该在哪里写? 我是否认为第一行是所有日志文件,第二行和第三行是只有wtmp和btmp? 所以如果我的逻辑是正确的,那么我必须在所有行中写入5M的大小 ,对吗?