我如何配置logrotate在轮换后不删除我的日志文件?


24

有办法吗?


您能告诉我们为什么要这样做吗?也许还有其他选择...
chmeee

以我为例,最好将大的旧日志下载到外部存储并将新日志保存在服务器上。所以我需要一个简单的日志拆分器。
sekrett '16

2
这种配置的用例是:我希望永久保留日志,因为出于审核目的可能需要它,但是我希望旋转文件,以使当前日志不会太大,而旋转后的日志可以压缩-否则,将日志备份到外部服务器太困难,并且检查文件也太慢。
鲁道夫·梅耶

Answers:


32

在您的logrotate.conf(或等效的logrotate.d文件)中,更改显示为“

rotate 10

(您的数字可能不同)到更大的数字。这将告诉它保留很多天的日志。您可以使它达到36500,可以持续100年。


6
当我在树莓派(raspian pi)上进行此操作时,它每晚都会冻结。一旦我找到正在运行的进程并使用串行控制台打开文件,发现它试图重命名100000个不存在的文件。所以要当心。不幸的是,我没有更详细的信息
Christian

0

我一直在寻找它,以便每天,每周和每月轮换我的数据库备份;因此,我每天轮换文件,但保持文件每周轮换,每年轮换相同。

使用复制选项。从手册中:

copy

复制 复制日志文件,但完全不要更改原始文件。例如,此选项可用于为当前日志文件创建快照,或者在某些其他实用程序需要截断或解析该文件时使用。使用此选项时,创建选项将无效,因为旧的日志文件保留在原位。


这与下面的注释(serverfault.com/a/50186/275485)相同,并且没有提供正确的答案;副本并不意味着进行了旋转也不会被删除旧文件..
鲁道夫·迈耶

-3

撇开轮换涉及删除的观点... ;-)

看起来您可以简单地将单词“ copy”添加到适当的文件中(可能在/etc/logrotate.d中)。例如,一个apache2 logrotate脚本如下所示:

/var/log/apache2/*.log {
    每周
    Missingok
    旋转52
    压缩
    延迟压缩
    无可辩驳的
    复制
    共享脚本
    后旋转
        如果[-f“`。/ etc / apache2 / envvars; echo $ {APACHE_PID_FILE:-/ var / run / apache2.pid}`”]]; 然后
            /etc/init.d/apache2重新加载> / dev / null
        科幻
    尾标
}

尝试一下,看看它是否满足您的要求。


2
假设他希望“旋转”文件,但从不删除旧文件,则不会这样做。在配置节中添加“副本”意味着原始文件将永远永久增长,但最终该文件的旧副本将被删除。据我了解,当您期望其他一些过程来截断/删除原始文件时,“复制”主要有用。
Insyte,2009年

没错,这就是我想他要的。他特别要求一种“不删除我的日志文件”的方法,而不是一种“不删除我的日志文件的旧档案”的方法。猜猜我应该更加警惕那些只涉及一个主题而不涉及身体的问题;-)
贾斯汀·埃里森

2
短语“旋转后”提供了线索。
暂停,直到另行通知。

4
“撇开轮换涉及删除的观点……” 不一定。轮换可能只涉及压缩旧日志并保留它们,这似乎是问题所在。
reflexiv
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.