为什么 诊断日志(diagnostic log)需要 滚动(rolling) ?
2021年11月8日
为什么 诊断日志(diagnostic log)需要 滚动(rolling) ?
日志分为 诊断日志(diagnostic log)和交易日志或事务日志(transaction log)
前者用于系统软件的信息输出,告知维护人员系统目前的状态等等;后者用于维护数据一致性,常用于文件系统和数据库系统中。
不滚动带来的影响:
1. 最直接的影响就是,日志文件不断增大,对其操作(例如 append)所花费的时间也会线性增加。文件越大,通过 inode 索引到具体的 disk block 就需要更久的时间,因为后面需要多次索引(多级索引)才能找到那个具体的 disk block,而多次索引则意味着多次读盘。
2. 文件越来越大,占用大量磁盘空间,最终导致无磁盘空间可用。
3. 想要找到具体某一天的所有日志将会十分麻烦。
滚动带来的好处:
假设 日志文件 每超过 1G 或 每过一天 则进行滚动,那么它将会
最直接的好处就是,方便你查找具体某一天所记录的所有日志。因为我可以按日期来为日志文件命名。
由于文件不大,索引起来也会相对快许多。
当日志文件超过一定数目时,自动丢弃过旧的日志。在日志滚动的过程中,活动日志会以一个新名称命名,例如 log.1,之前被命名为 log.1 的文件则会被重命名为 log.2,依此类推。在这一组文件中,最旧的日志文件(假如名为 log.7)会从系统中删除。
由于日志文件之间进行了分离,那么对那些旧的日志可以进行统一归档处理。例如:
1
2
3ls /var/log/
log.1
log.2.gz # 经过 tar 归档压缩后的文件