回答:
ブライアンアームストロングの答えに基づいて、もう少し説明と修正を加えたものを紹介します。これは、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
and によって構成されます/etc/newsyslog.d/*
(通常、/etc/newsyslog.d/
管理リストにログを追加するにはファイルを追加する必要があります)。/var/log/asl/
。私はまだこのシステムを完全には理解していませんが、このデータベースはaslmanagerによって削除されているよう/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分)。
newsyslog
OSXで自動的に実行されます。このような構成ファイルを使用/etc/newsyslog.d/rails_apps.conf
して、devログファイルを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