web-dev-qa-db-ja.com

OSX /var/log/system.log-プルーニング間隔はどこで定義しますか?

/var/log/system.logを定期的にチェックするスクリプトがあり、ネットワーク全体で、再起動やその他のアクティビティを通じて1か月間ログファイルを保持するマシンもあれば、毎晩または再起動するたびにファイルをパージするマシンもあることに気付きました。

ここで正確なルールを知っている人はいますか、または間隔を指定できますか?前もって感謝します。

7
David Houde

OS Xでは、/ var/log /system.logはnewsyslogコマンドによってローテーションされます。このコマンドは1時間半ごとに実行されます(/System/Library/LaunchDaemons/com.Apple.newsyslog.plistを参照)。 Macが実行されて起動しているときはいつでも。ローテーションルールは/etc/newsyslog.confにあり、そこから関連する行は次のとおりです。

# logfilename          [owner:group]    mode count size when  flags [/pid_file] [sig_num]
/var/log/system.log                     640  7     *    @T00  J

この権利を理解している場合( newsyslog.confのマニュアルページ を参照)、「when」フィールドの「@ T00」は、newsyslogが深夜から午前1時の間に実行された場合にログがローテーションされることを意味します。午前12時30分の実行時。ただし、Macの電源がオフになっているか12:30にスリープしている場合、この実行は行われず、ログはその日にローテーションされません。これが、このような変動する結果が表示される理由です。

ローテーション基準を変更する場合は、/ etc /newsyslog.confを自由に編集してください。他のほとんどのログはサイズに基づいてローテーションされますが、system.logが異なる理由はわかりません。

更新:10.9以降、system.logのローテーションコントロールが/etc/newsyslog.confから/etc/asl.confに移動しました(Appleシステムログ機能の構成。 system.logに書き込みます)。次のようなセクションがあります。

# Rules for /var/log/system.log
> system.log mode=0640 format=bsd rotate=seq compress file_max=5M all_max=50M
? [= Sender kernel] file system.log
? [<= Level notice] file system.log
? [= Facility auth] [<= Level info] file system.log
? [= Facility authpriv] [<= Level info] file system.log

「rotate = seqcompress file_max = 5M all_max = 50M」セクションは、アーカイブと保持を制御します。詳細とオプションについては、 man asl.conf を参照してください。

ロギングシステムは10.12でかなり徹底的に書き直されましたが、これは変更されていないようです。

6
Gordon Davisson