是日志旋转隐藏在 OSX 的某个地方,或者有类似的东西吗?它不在 中/usr/sbin
。
答案1
根据 Brian Armstrong 的回答,这里有一些解释和更正。这将处理 Homebrew 安装的 OSX 上的 postgres 创建的日志。位于/etc/newsyslog.d/postgresql.conf
:
# logfilename [owner:group] mode count size(KB) when flags [/pid_file] [sig_num]
/usr/local/var/postgres/postgresql.log : 600 2 2048 * J /usr/local/var/postgres/postmaster.pid
当日志文件达到 2MB 大小时,它将轮换日志文件,保留 2 个存档(总共使用 6MB 存储空间),然后对存档进行 bzip2 压缩。轮换后,它将通知 postgres 进程重新打开日志文件,这对于获取新的日志条目和实际释放磁盘空间(无需重新启动机器)是必要的。
需要注意的是,大小以 KB 为单位,而不是字节。
您可以使用 测试配置文件(不影响任何文件)sudo newsyslog -nvv
。
newsyslog 文档位于此处:http://www.freebsd.org/cgi/man.cgi?newsyslog.conf(5). 还使用:http://www.redelijkheid.com/blog/2011/3/28/adding-custom-logfile-to-os-x-server-log-rotation.html
答案2
OS X 有多种方式来轮换/过期/等等其日志,具体取决于相关日志的类型:
- 对于常规日志文件(即连续附加内容的文本文件),新系统日志可以根据大小或时间旋转它们,尽管它似乎没有那么多选项。它由和
logrotate
配置(通常,您应该将文件添加到以将日志添加到其管理列表中)。/etc/newsyslog.conf
/etc/newsyslog.d/*
/etc/newsyslog.d/
- OS X 的 syslog 系统正在从纯文本格式迁移到数据库格式,主要是
/var/log/asl/
。我还不完全了解这个系统,但这个数据库似乎被助理经理,由 配置/etc/asl.conf
。 - 对于将单个日志“条目”添加为单独文件的目录(主要是
/Library/Logs/CrashReporter/
),这些文件将被清除/etc/periodic/daily/100.clean-logs
。其策略(扫描哪些目录以及将文件保留多长时间)在中配置/etc/defaults/periodic.conf
,但如果您想覆盖/更改它们,则应/etc/periodic.conf.local
在那里创建并放置您的自定义设置。
如果您想要轮换的内容不适合任何这些模型,您可以添加自己的脚本/etc/periodic/daily/
(每天早上 3:15 运行),/etc/periodic/weekly/
(每周六早上 3:15 运行),或/etc/periodic/monthly/
(每月第一天早上 5:30 运行)。
答案3
您可以通过 Homebrew 获取 logrotate。以下是我设置时的笔记。
安装
brew install logrotate
配置日志轮换
日志轮换配置文件位于/usr/local/etc/logrotate.d/
编辑配置文件。例如,我想轮换我引入的一些“/var/log/tend_*.log”文件:
sudo vi /usr/local/etc/logrotate.d/tend.conf
内容:
/var/log/tend_*.log { daily copytruncate rotate 3 size 10M compress }
测试一下
sudo logrotate -v -f /usr/local/etc/logrotate.d
启动服务
sudo brew services start logrotate
重启服务
sudo brew services restart logrotate