logrotate はOSXのどこかに隠れていますか、それとも同等のものはありますか? /usr/sbin
にはありません。
ブライアンアームストロングの回答に基づいて、もう少し説明と修正を加えたものを示します。これは、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-compressします。回転したログファイルを再度開くように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
OS Xには、問題のログのタイプに応じて、ログをローテーション/期限切れ/その他にするいくつかの方法があります。
logrotate
と同じ数のオプションがあります。 /etc/newsyslog.conf
と/etc/newsyslog.d/*
で構成されます(通常、ファイルを/etc/newsyslog.d/
に追加して、ログを管理リストに追加する必要があります)。/var/log/asl/
で、このプレーンテキスト形式からデータベース形式に移行しています。私はまだこのシステムを完全に理解していませんが、このデータベースは/etc/asl.conf
によって構成されている aslmanager によって消去されるようです。/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分)、または/etc/periodic/monthly/
(毎月1時の午前5時30分)。
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
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