web-dev-qa-db-ja.com

OSXでのlogrotateと同等

logrotate はOSXのどこかに隠れていますか、それとも同等のものはありますか? /usr/sbinにはありません。

54
Steve Bennett

ブライアンアームストロングの回答に基づいて、もう少し説明と修正を加えたものを示します。これは、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

26
Robin Daugherty

OS Xには、問題のログのタイプに応じて、ログをローテーション/期限切れ/その他にするいくつかの方法があります。

  1. 通常のログファイル(つまり、継続的に追加されるテキストファイル)の場合、 newsyslog はサイズまたは時間に基づいてローテーションできますが、 logrotateと同じ数のオプションがあります。 /etc/newsyslog.conf/etc/newsyslog.d/*で構成されます(通常、ファイルを/etc/newsyslog.d/に追加して、ログを管理リストに追加する必要があります)。
  2. OS XのSyslogシステムは、主に/var/log/asl/で、このプレーンテキスト形式からデータベース形式に移行しています。私はまだこのシステムを完全に理解していませんが、このデータベースは/etc/asl.confによって構成されている aslmanager によって消去されるようです。
  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分)、または/etc/periodic/monthly/(毎月1時の午前5時30分)。

22
Gordon Davisson

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
11
Brian Armstrong

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

9
broofa
0
Steve Bennett