相当于 OSX 上的 logrotate

Ste*_*ett 56 logging mac-osx-server mac-osx logrotate

logrotate是否隐藏在 OSX 上的某个地方,或者是否有等价物?它不在/usr/sbin.

小智 27

根据布赖恩阿姆斯特朗的回答,这里有一些更多的解释和更正。这将处理由 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 
Run Code Online (Sandbox Code Playgroud)

这将在日志文件达到 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

  • 我刚刚花了 20 分钟试图找出在现代 macOS 上实际运行“newsyslog”的内容。我将在此处附加答案,以防它对任何人有用:正如所料,“newsyslog”执行由“launchd(8)”控制。属性列表位于(10.15.3)“/System/Library/LaunchDaemons/com.apple.newsyslog.plist”。 (4认同)

Gor*_*son 22

OS X 有多种方法来轮换/过期/等其日志,具体取决于相关日志的类型:

  1. 对于常规日志文件(即连续附加的文本文件),newsyslog可以根据大小或时间轮换它们,尽管它似乎没有logrotate. 它由/etc/newsyslog.conf和配置/etc/newsyslog.d/*(通常,您应该添加文件/etc/newsyslog.d/以将日志添加到其管理列表)。
  2. OS X 的 syslog 系统正在从这种纯文本格式迁移到数据库格式,主要是/var/log/asl/. 我还没有完全理解这个系统,但是这个数据库似乎被aslmanager清除了,它是由/etc/asl.conf.
  3. 对于将单个日志“条目”添加为单独文件(主要是/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)。


bro*_*ofa 15

您可以通过 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


Bri*_*ong 11

newsyslog在 OSX 上自动运行,我使用这样的配置文件/etc/newsyslog.d/rails_apps.conf将我的开发日志文件修剪为 5MB

# logfilename                           [owner:group]   mode count size     when  flags [/pid_file] [sig_num]
/Users/barmstrong/code/**/log/*.log                     666  0     5242880  *     G
Run Code Online (Sandbox Code Playgroud)