为什么 诊断日志(diagnostic log)需要 滚动(rolling) ?

日志分为 诊断日志(diagnostic log)和交易日志或事务日志(transaction log)

前者用于系统软件的信息输出,告知维护人员系统目前的状态等等;后者用于维护数据一致性,常用于文件系统和数据库系统中。

不滚动带来的影响:

​ 1. 最直接的影响就是,日志文件不断增大,对其操作(例如 append)所花费的时间也会线性增加。文件越大,通过 inode 索引到具体的 disk block 就需要更久的时间,因为后面需要多次索引(多级索引)才能找到那个具体的 disk block,而多次索引则意味着多次读盘。

​ 2. 文件越来越大,占用大量磁盘空间,最终导致无磁盘空间可用。

​ 3. 想要找到具体某一天的所有日志将会十分麻烦。

滚动带来的好处:

​ 假设 日志文件 每超过 1G 或 每过一天 则进行滚动,那么它将会

  1. 最直接的好处就是,方便你查找具体某一天所记录的所有日志。因为我可以按日期来为日志文件命名。

  2. 由于文件不大,索引起来也会相对快许多。

  3. 当日志文件超过一定数目时,自动丢弃过旧的日志。在日志滚动的过程中,活动日志会以一个新名称命名,例如 log.1,之前被命名为 log.1 的文件则会被重命名为 log.2,依此类推。在这一组文件中,最旧的日志文件(假如名为 log.7)会从系统中删除。

  4. 由于日志文件之间进行了分离,那么对那些旧的日志可以进行统一归档处理。例如:

    1
    2
    3
    ls  /var/log/
    log.1
    log.2.gz # 经过 tar 归档压缩后的文件