2

私は OS X 10.9.4 を使用しており、newsyslogを使用してアプリ開発ログ ファイルをローテーションしようとしています。

より具体的には、ファイルを毎日ローテーションしたいのですが、ファイルが空でない場合のみです (newsyslog は、ローテーションするすべてのログファイルに 1 行または 2 行を書き込むため、少なくとも 1kb のログのみをローテーションしたいとしましょう)。

ファイルを作成しました/etc/newsyslog.d/code.conf

# logfilename                     [owner:group]   mode  count  size  when   flags [/pid_file] [sig_num]
/Users/manuel/code/**/log/*.log   manuel:staff    644   7      1     $D0    GN

構成ファイルのマニュアル ページを理解する方法は、sizeと条件を組み合わせて機能する必要があるため、ログ ファイルが 1kb 以上の場合にのみ、when毎晩深夜にローテーションする必要があるということです。

残念ながら、これは起こりません。ログ ファイルは、newsyslog からのローテーション メッセージだけであっても、それ以外のものであっても、毎晩ローテーションされます。

~/code/myapp/log (master) $ ls
total 32
drwxr-xr-x   6 manuel  staff   204B Aug  8 00:17 .
drwxr-xr-x  22 manuel  staff   748B Jul 25 14:56 ..
-rw-r--r--   1 manuel  staff    64B Aug  8 00:17 development.log
-rw-r--r--   1 manuel  staff   153B Aug  8 00:17 development.log.0

~/code/myapp/log (master) $ cat development.log
Aug  8 00:17:41 localhost newsyslog[81858]: logfile turned over

~/code/myapp/log (master) $ cat development.log.0 
Aug  7 00:45:17 Manuels-MacBook-Pro newsyslog[34434]: logfile turned over due to size>1K
Aug  8 00:17:41 localhost newsyslog[81858]: logfile turned over

これを機能させる方法に関するヒントをいただければ幸いです。

4

1 に答える 1

3

あなたが探しているもの (何も記録していない限りファイルを毎日ローテーションする) は、newsyslog を使用することはできません。あなたが参照したマニュアルページは、指定されていない場合は、指定されている場合と同じであると言う以外に、結合sizeについては何も述べていません。実際には、いずれかの条件が満たされたときにログがローテーションされます。ユーティリティが FreeBSD の対応物に似ている場合、バイナリ フラグが設定されていない限り、サイズが 512 バイト未満のログはローテーションされません。whenwhensize

MacOS の newsyslog の新しい代替であるASLも、期待どおりの動作をしません。私の知る限り、これを持つ唯一のユーティリティは、構成オプションを使用するlogrotateです。Homebrewnotifemptyを使用して、Mac に logrotate をインストールできます。

于 2014-08-12T00:20:34.307 に答える