在OSX上等效于logrotate


52

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


我注意到有newsyslog,但这并不完全相同,需要root用户。
史蒂夫·贝内特

我想知道可以移植logrotate吗。
汤姆·奥康纳

检查/ etc / periodic,我相信默认情况下日志轮转是作为其中的一组shell脚本实现的。另请参阅newsyslog(/etc/newsyslog.d和手册页),以获取基于文件大小的方法。
malcolmpdx 2012年

感谢您的提示-/ etc / periodic中确实存在脚本
Steve Bennett

@SteveBennett人们还会如何获得“关键”徽章?有人不知道徽章和声誉吗?
马克·费舍尔

Answers:


23

根据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


21

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 am运行),/etc/periodic/weekly/(每天星期六早上3:15 am运行)或/etc/periodic/monthly/(第一个每个月的凌晨5:30)。


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

大小以K为单位,并且owner:group即使为空白也需要“:”
Bryan Ash

9

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.