Articles of logrotate

正确的方法来旋转Nginx日志

我想实现nginx日志的轮换: 将工作没有任何额外的软件(即 – 如果没有“logrotate”最好) 会创build基于date名称的旋转文件 最好的办法就像PostgreSQL一样 – 即在它的log_filenameconfigurationvariables中,我可以指定strftime-style%Y-%m-%d,它会自动更改logindate(或时间)更改。 Apache的另一种方法 – 通过pipe道发送日志到rotatelogs程序。 就我所能search到的,不存在这样的方法。 我所能做的就是使用带有dateext选项的logrotate,但是它有自己的缺点,我宁愿使用像PostgreSQL中的rotatelogs或log_filename一样的东西。

MySQL不会在旋转后将错误logging到新文件中?

问题解决了,但我正在写下未来的参考。 /root/.my.cnf [mysqladmin] user = root password = pa$$w0rd /etc/logrotate.d/mysql /var/log/mysql-slow.log /var/log/mysqld.log { daily rotate 7 dateext compress missingok #notifempty sharedscripts create 644 mysql mysql postrotate /usr/bin/mysqladmin flush-logs endscript } 从命令行运行时, logrotate工作正常: # logrotate -v -f /etc/logrotate.d/mysql 但从凌晨4点从cron运行时,它不起作用日志文件已被轮换,但MySQL不会将错误logging到新创build的文件: -rw-r–r– 1 mysql mysql 0 Aug 7 10:13 /var/log/mysqld.log -rw-r–r– 1 mysql mysql 20 Aug 4 04:04 […]

什么时候以及如何在Ubuntu 10.04下运行logrotate?

我是系统pipe理新手,有几个问题: 系统启动的logrotate过程在哪里以及如何进行? 我的“日常”旋转日志文件正在旋转的时间是什么时间? 对于* .log条目中匹配的每个日志文件,执行prerotate命令吗? 谢谢

包含时间戳的文件名的首选格式

正如我们都知道“unix”除了“/”和“\ 0”之外可以有任何文件,系统pipe理员往往会有一个更小的偏好,主要是由于没有任何喜欢空间作为input…和一堆事情对“:”和“@”等特殊含义。 最近我又看到了另外一个例子,在一个文件名中使用了一个时间戳,在用不同的格式播放了一些后使它“更好”,我想我会试图find一个“最佳实践”,而不是看到一个我只是问在这里,看看人们的想法。 可能的“常见”解决scheme(p =前缀和s =后缀): syslog / logrotate / DNS格式如下: p-%Y%m%d-suffix = prefix-20110719-s p-%Y%m%d%H%M-suffix = prefix-201107191732-s p-%Y%m%d%H%M%S-suffix = prefix-20110719173216-s 优点: 这是“共同的”,所以“够好”可能比“最好”更好。 没有怪异的字符。 容易区分“date/时间一滴”与其他一切。 缺点: 只有date的版本是不容易阅读,包括时间,使我的眼睛stream血,秒也是“大声笑”。 假设TZ。 ISO-8601格式 p-%Y-%m-%ds = p-2011-07-19-s p-%Y-%m-%dT%H:%M%zs = p-2011-07-19T17:32-0400-s p-%Y-%m-%dT%H:%M:%S%zs = p-2011-07-19T17:32:16-0400-s p-%Y-%m-%dT%H:%M:%S%zs = p-2011-07-19T23:32:16+0200-s 优点: 没有空间。 考虑TZ。 人类阅读是否“不错”(只有date是好的)。 可以由$(date –iso = {hours,minutes,seconds})生成 缺点: SCP /焦油/等。 不会喜欢那些':'字符。 需要一些“正常”的人看到“T”的WTF,最后是什么:)。 很多' – […]

掠过.gz日志文件

是否有一个神奇的shellpipe道,可以很容易地通过一堆.gz日志文件grep而不需要提取他们的地方? .gz文件是Apache日志,日志轮转的结果。 我想快速检查过去访问某些URI的频率。

Logrotate:旋转非日志文件?

我有一个备份脚本,压缩各种文件和目录,并创build.tgz档案。 文件被命名,例如 … backup_2010-10-28.tar.gz backup_2010-10-29.tar.gz backup_2010-10-30.tar.gz backup_2010-10-31.tar.gz backup_2010-11-01.tar.gz 我想要pipe理这些文件,只保留最后5个备份,旧文件被删除。 我可以使用logrotate来做到这一点? 它们不是日志文件,并且已经被压缩。 他们在/根,而不是在/ var /日志 – 我仍然可以使用它? 谢谢

如何根据间隔轮换日志,除非日志超过一定的大小?

从logrotate的手册页: 大小不一 日志文件在长度大于字节大小时会旋转,但不会在额外指定的时间间隔(每天,每周,每月或每年)之前进行旋转。 除了与时间间隔选项互斥外,相关大小选项是相似的,它会导致日志文件旋转而不考虑上一次旋转时间。 当使用最大值时,会考虑日志文件的大小和时间戳。 尺寸 大小 日志文件在长度大于字节大小时会进行旋转。 如果大小后面跟着k,则大小假定为千字节。 如果使用M,则大小以兆字节为单位,如果使用G,则大小以千兆字节为单位。 所以大小100,大小100k,大小100M和大小100G都是有效的。 我将size设置为5M,并将interval设置为每周 ,并认为日志会每周旋转一次,如果日志的大小超过5M,则会发生额外的旋转。 但是会发生的事情是,日志不会旋转,除非它超过了5M,这似乎是最小化应该做的。 我是否错误地解释了手册? 如何获得日志,每周轮换,如果超过5M? 编辑: 我不确定以下信息是否相关,只是作为补充: 我使用rsyslog做消息,安全,cron,maillog,引导的主要日志logging。 以下是如上所述设置大小和间隔的倒数第二个日志的旋转date和文件大小: filename rotation date file size messages 20130129 5.3MB secure 20130113 5.1kB cron 20130113 3.6kB maillog 20130113 1.1kB 可以看出,只有消息被旋转。 EDIT2: 我应该检查与man logrotate 。 他们实际上用maxsize选项升级了它。 这应该是我正在寻找的: 最大 尺寸 即使在额外指定的时间间隔(每天,每周,每月或每年)之前,日志文件在大于字节大小时也会进行旋转。 除了与时间间隔选项互斥之外,相关大小选项是相似的,它会导致日志文件旋转而不考虑上一次旋转时间。 当使用maxsize时,会考虑日志文件的大小和时间戳。

Logrotate和打开文件

logrotate如何处理打开的文件? 可以使用logrotate旋转进程打开的文件吗?

nginx日志logging到access.log.1而不是access.log,logrotate失败?

我有一个nginx实例,它被设置为logging访问/var/log/nginx/access.log和错误到/var/log/nginx/errors.log,但是一旦logrotate每周运行一次,文件就会移动到* .log.1和新的* .log文件被创build,但nginx继续login到log.1文件而不是新的.log文件(没有任何东西被压缩)。 我第一次注意到这一点,自从轮伐日志变成3周后,日志变得越来越大了。 运行kill -HUP `cat /run/nginx.pid`让nginx重新开始logging到正确的地方,但是这个问题在下个星期又开始了。 这是令人沮丧的更重要的原因是我有日志设置为通过rsyslog上传到Loggly,当nginx停止logging到文件我有rsyslog轮询,然后停止上传,我没有得到任何警报。 我怀疑这与重新启动nginx或重新加载configuration有关,因为它没有启动,直到我做了一个configuration更改,并以我认为是正常的方式重新加载configuration。 我试着运行kill -USR1 `cat /run/nginx.pid`但是文件继续logging到错误的位置,直到我运行kill -HUP `cat /run/nginx.pid` ,而我已经知道这并不能解决问题。 任何想法是怎么回事? 我承认我不是logrotate或者nginxpipe理方面的专家,但是我的Google在这个方面失败了。 这里是我的nginx logrotate脚本,让我知道如果还有什么你可能想看到的。 除了定义输出位置之外,nginx.conf在日志方面没有什么特别之处。 /var/log/nginx/*.log { weekly missingok rotate 52 compress delaycompress notifempty create 0640 www-data adm sharedscripts prerotate if [ -d /etc/logrotate.d/httpd-prerotate ]; then \ run-parts /etc/logrotate.d/httpd-prerotate; \ fi \ endscript postrotate [ -s /run/nginx.pid […]

我如何configurationlogrotate不旋转后删除我的日志文件?

有办法做到这一点?