macOS统一日志默认启用自动归档与轮转,应通过log config设置保留策略(如--age 14d或--size 2g),配合newsyslog管理/var/log/遗留日志,禁止手动删除数据库文件。
macos 自带的统一日志系统(unified logging)默认已启用自动归档与轮转,无需额外安装工具。关键在于理解其工作机制,并通过系统命令和配置加以规范,而非手动干预底层文件。
确认统一日志系统已启用
macOS 10.12 及以后版本默认使用 log 命令管理日志,数据存于受保护的数据库中(/var/db/diagnostics/ 和 /var/db/uuidtext/),不以明文 .log 文件形式持续写入。可运行以下命令验证:
-
log show --last 1h | head -5—— 查看最近一小时日志是否可读 -
log stats—— 显示当前日志存储状态、保留时长与磁盘用量
用 log config 设置自动归档策略
系统支持按时间或空间限制自动清理旧日志,这是最安全、最推荐的“自动归档管理”方式:
- 限制日志最多保留 14 天:
sudo log config --mode "level:default" --size 0 --age 14d - 限制日志总占用不超过 2GB:
sudo log config --mode "level:default" --size 2g --age 0 - 恢复为系统默认策略(通常为“保留至磁盘空间紧张时自动清理”):
sudo log config --mode "level:default"
这些设置会持久生效,重启后仍有效,且与 macOS 的自动维护任务协同工作。
配合传统日志目录的轮转机制
/var/log/ 下的少量遗留日志(如 system.log、install.log)由 newsyslog 管理,其轮转规则定义在 /etc/newsyslog.conf 中。如需增强归档能力,可:
- 检查当前配置:
cat /etc/newsyslog.conf | grep -v "^#" | grep -v "^$" - 确保关键日志行含
gzip字样(表示归档时自动压缩) - 如需延长保留数量,修改对应行末尾数字(例如将
5改为10表示保留 10 个 .gz 归档)
修改后无需重启服务,newsyslog 每小时自动触发一次轮转。
避免自行脚本清理统一日志数据库
不要直接删除 /var/db/diagnostics/ 下的文件,也不建议用 find ... -delete 扫描日志目录。错误操作可能导致:
- 诊断报告生成失败
- Console.app 无法加载归档
- 部分系统服务日志丢失
真正需要清理时,应使用 sudo log erase --since "30 days ago" 或 --all,由系统安全卸载归档数据。


















