Intereting Posts

OSX上的logrotate等效

logrotate隐藏在OSX的某个地方,还是有相当的? 它不在/usr/sbin

    根据布莱恩·阿姆斯特朗的回答,这里有一些更多的解释和更正。 这处理由Homebrew安装的OSX上由postgres创build的日志。 位于/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来testingconfiguration文件(不影响任何文件)。

    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

    OS X有几种方法来旋转/过期/等日志,具体取决于问题的日志types:

    1. 对于常规的日志文件(即不断附加到的文本文件), newsyslog可以根据大小或时间旋转它们,虽然它看起来没有logrotate那么多。 它由/etc/newsyslog.conf和/etc/newsyslog.d/*configuration(通常,您应该将文件添加到/etc/newsyslog.d/以将日志添加到其pipe理列表中)。
    2. OS X的系统日志系统正在从这种纯文本格式迁移到数据库格式,主要在/ var / log / asl /中。 我还没有完全理解这个系统,但是这个数据库似乎被/etc/asl.confconfiguration的aslmanager清除了。
    3. 对于将单独的日志“条目”添加为单独文件(主要是/ Library / Logs / CrashReporter /)的目录,这些文件将被/etc/periodic/daily/100.clean-logs清除。 它的策略(要扫描的目录以及离开文件的时间)是在/etc/defaults/periodic.conf中configuration的,但是如果你想覆盖/修改它们,你应该创build/etc/periodic.conf.local并把你的自定义那里。

    如果你想旋转的东西不适合任何这些模型,你可以添加你自己的脚本到/ etc / periodic / daily /(这将在每天凌晨3:15运行),/ etc / periodic / weekly / (每周六早上3:15)或/ etc / periodic / monthly /(每个月的第一个早上5:30)。

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

     # logfilename [owner:group] mode count size when flags [/pid_file] [sig_num] /Users/barmstrong/code/**/log/*.log 666 0 5242880 * G 

    你可以通过Homebrew获得logrotate。 这是我设置这个的笔记。

    安装

    brew install logrotate

    configuration日志轮换

    日志轮转configuration文件在/usr/local/etc/logrotate.d/

    编辑configuration文件。 例如,我想旋转一些我介绍的“/var/log/tend_*.log”文件:

    sudo vi /usr/local/etc/logrotate.d/tend.conf

    内容:/ /var/log/tend_*.log { daily copytruncate rotate 3 size 10M compress }

    testing一下

    sudo logrotate -v -f /usr/local/etc/logrotate.d

    开始服务

    sudo brew services start logrotate

    重新启动服务

    sudo brew services restart logrotate