Articles of logrotate

logrotate压缩参数

我一直在使用cstream很多事情,例如为了减lessmysqldump对驱动器的影响。 不过,我总是通过直接从脚本或cronjob调用二进制文件来完成此操作。 我现在有一种情况,如果我可以使用logrotate cstream ,但是经过一些试验,我无法得到它的工作。 你可以用两种不同的方式使用cstream : 作为“猫”二进制 cstream foo | gzip 作为来自另一个过程的pipe道 mysqldump foo | cstream > dump.sql 更确切地说,我想从compresscmd选项中调用cstream 。 现在我只是在logrotateconfiguration文件中使用这个。 compresscmd /bin/gzip compressoptions -9 但就像我说的,我想用类似的东西 compresscmd cstream foo | gzip 那可能吗? 我可以使用logrotateconfiguration文件中的variables/macros,以便我可以传递文件的信息压缩到cstream ? 另外,我尝试使用带有脚本的compresscmd来打印脚本收到的参数,但是我只看到一个参数值为= -9 所以,实际上我不知道gzip是如何获取这些信息的。 它是否只能从logrotate获得一些bash env值? 我看了一下logrotate的文档,但是我看不出有什么答案。 任何人都可以对此有所了解吗?

脚本来修改logrotateconfiguration文件?

我正在寻找一个脚本,这将允许我以编程方式修改logrotateconfiguration文件。 至less我希望能够replace一个块,如 /var/log/wtmp { missingok monthly create 0664 root utmp rotate 1 } 与一个新的命令行或通过stdin或通过文件(我不关心哪个)给出的块。 它必须能够在任意configuration文件上运行。 我真的很喜欢它,如果它理解了足够的configuration,我可以这样说 logrotateupdate /etc/logrotate.conf /var/log/wtmp weekly 并做它正确的事情(删除每月并在上面的例子中每周更换)。 这可能是别人通常所知道的,但这是我从未见过的。 我的系统是Linux(Ubuntu)。

/etc/cron.daily中的两个脚本似乎在旋转我的日志:logrotate和sysklogd

看来我的syslog生成的日志文件每天轮换两次。 我相信这是由于/etc/cron.daily/logrotate和/etc/cron.daily/sysklogd做重叠的工作。 以下是sysklogd脚本的相关行: logs=$(syslogd-listfiles) test -n "$logs" || exit 0 for LOG in $logs do if [ -s $LOG ]; then savelog -g adm -m 640 -u ${USER} -c 7 $LOG >/dev/null fi done 处理这个问题的最佳常见做法是什么? syslog生成的文件是否应该在logrotate中列出? 如果我想使用一些logrotate的更高级的function,像postrotate脚本 – 我应该尝试使/etc/cron.daily/sysklogd做到这一点,或者我应该注释掉这些行,让logrotate做到这一点?

nginx的logrotateconfiguration

什么是最好的方法来旋转nginx日志文件? 在我看来,我应该在/etc/logrotate.d/中创build一个“nginx”文件,并用下面的代码填充它,然后执行/etc/init.d/syslog restart。 这将是我的configuration(我还没有testing过): /usr/local/nginx/logs/*.log { #rotate the logfile(s) daily daily # adds extension like YYYYMMDD instead of simply adding a number dateext # If log file is missing, go on to next one without issuing an error msg missingok # Save logfiles for the last 49 days rotate 49 # Old versions of log […]

清漆logrotate问题

我在logrotate.d/varnish文件中有这个: /var/log/varnish/*log { create 640 http log compress postrotate /bin/kill -USR1 `cat /var/run/varnishncsa.pid 2>/dev/null` 2> /dev/null || true endscript } 这在我的/etc/rc.local文件中: varnishncsa -a -w /var/log/varnish/access.log -D -P /var/run/varnishncsa.pid 但是当logrotate创build一个新的access.log文件时,它仍然是空白的。 我必须做sh /etc/rc.local来保存日志。 由于logrotation每周都会发生,我必须每周执行一次rc.local来获取保存在access.log文件中的日志。 这里可能是什么问题?

旋转日志文件中间日志条目

我有一个c ++工具,通过printf即输出到STDOUT printf ("%s\n", logline); 然后,我pipe它旋转日志即 tool | rotatelogs /tmp/logs/log_%s 60 一切工作很好,但rotatelogs将中线旋转,所以日志文件1有这个JSON片段: {"tim …和日志文件2将具有: e":1386088072} 有没有一种方法来鼓励rotatelogs在换行符上旋转?

从标准日志中旋转日志

我有一个程序需要一个参数来允许我们使用的硬件进行额外的debugging。 日志只是写到标准输出,所以通常我们只是将标准输出到一个文件,即./myprog -AddDebug> myfile.txt,但是现在我们需要保持这个日志logging能够find一个我们通常不会这样做是寻找一种方法来旋转日志,以确保服务器磁盘空间不会用完。 我已经使用内置的logrotate函数在Linux中添加一个configuration文件到/etc/logrotate.d/mytrace其中包含以下内容: /home/myprog/mytrace.txt { rotate 5 size 2M copytruncate olddir trace_archive } 当我运行/ usr / sbin / logrotate /etc/logrotate.conf时,跟踪文件被移动到archvie,但是原来是重新创build的,但是显然pipe道丢失了,所以文件不再被写入。 然后,我试图用copytruncatereplacecreate ,它仍然将文件放在存档中,但原始文件只是不断增长。 第二个问题,只有当我手动运行logrotate函数时文件才会被存档,当达到文件大小时它不会自动触发。 任何帮助,你可以提供这两个问题,将不胜感激。 UPDATE 我已经设法得到它的一部分工作,为了让copytruncate工作文件需要以附加模式打开,所以而不是./myprog -AddDebug > myfile.txt这应该改为./myprog -AddDebug >> myfile.txt 。 我现在唯一的问题是,如果我运行logrotate -v /etc/logrotate.conf ,那么只能进行轮换,所以我怎样才能让它自动完成呢? 看起来好像我将不得不手动创build每隔几分钟运行一次的cronjob,以确保日志被轮转,而不是自动处理。 谢谢

旋转haproxy日志

我尝试了一些东西,但仍然无法有效地旋转haproxy日志。 当日志文件跨越500 MB大小时,我需要旋转日志。 考虑到haproxy服务很大没有。 的静态TCP连接,我不能重新启动haproxy进程,虽然重新加载是可行的。 每日haproxy日志文件大小通常在我的机器上超过3 GB。 以下是日志文件大小超出限制设置的较新机器的示例: ubuntu@server:/mnt/log/haproxy$ ls -lsh total 4.3G 85M -rw-r—– 1 syslog adm 85M Jun 2 07:13 haproxy.log 2.9G -rw-r—– 1 syslog adm 2.9G Jun 2 06:37 haproxy.log.1 460M -rw-r—– 1 syslog adm 460M Jun 1 06:32 haproxy.log.2.gz 469M -rw-r—– 1 syslog adm 469M May 31 06:42 haproxy.log.3.gz 384M -rw-r—– […]

用像logrotate这样的后缀拆分大的日志文件

在我看到我忘了在一台服务器上为php5-fpm.log添加一个logrotate-conf,现在看到它已经变得非常大了,我在问自己如何将这个日志文件拆分成单独的文件,像logrotate这样的后缀会产生。 你知道…像这样的错误从来没有发生过: – P 但是我最近想到的是: split -C 10m -d php5-fpm.log php5-fpm.log. …但这是生产文件,如: php5-fpm.log.00 php5-fpm.log.01 php5-fpm.log.02 … 从后缀中删除前导零将是一个简单的任务,可以很容易地手动完成。 但是,这里是我的问题:我怎样才能恢复后缀,使后缀最高的文件成为最低的?

Logrotate错误:找不到/var/log/apache*/*error.log文件

Logrotate每天运行,并通过电子邮件发送给我一份报告。 这一直工作正常,但我现在每天也得到以下电子邮件: Date: Mon, 10 Aug 2009 04:02:08 +0100 From: [email protected] (Cron Daemon) To: [email protected] Subject: Cron <root@dev> run-parts /etc/cron.daily Auto-Submitted: auto-generated X-Cron-Env: <SHELL=/bin/bash> X-Cron-Env: <PATH=/sbin:/bin:/usr/sbin:/usr/bin> X-Cron-Env: <MAILTO=root> X-Cron-Env: <HOME=/> X-Cron-Env: <LOGNAME=root> X-Cron-Env: <USER=root> /etc/cron.daily/logrotate: ERROR No file found for /var/log/apache*/*error.log ERROR No file found for /home/www/myhomepage/error.log ERROR No file found for /var/www/*/logs/access_log 上面的日志目录不存在,我不知道为什么logrotate突然决定包含它们。 我觉得这个问题在我安装了fail2ban之后就开始了。 […]