os:freebsd:tips:newsyslog
ログローテート / newsyslog
設定ファイル
/etc/newsyslog.conf.d/に、nginx.confなどの任意の名前でファイルを作成
書式
以下の書式でログローテーションのルールを記述
logfilename [owner:group] mode count size when flags [/pid_file] [sig_num]
パラメータ | 説明 |
---|---|
logfilename | ローテーション対象のログファイルパス |
*などのワイルドカードも使用可能 | |
[owner:group] | ローテーション後のファイルの所有者とグループを指定 |
mode | ファイルのパーミッションを8進数で指定 |
count | 保存するバックアップログの世代数 |
size | ファイルサイズがこの値(キロバイト単位)に達した際にローテーションを実行 |
*を指定するとサイズでの判定は無効 | |
when | ローテーションを実行するタイミングを指定 |
$D<hour>で毎日、$M<day>D<hour>で毎月指定した日時に実行 | |
flags | 動作を制御するオプションです |
- B: ログファイルにローテーションメッセージを残しません | |
- G: logfilenameにワイルドカードが含まれていることを示します | |
- J: bzip2で圧縮します | |
- X: xzで圧縮します | |
- Z: gzipで圧縮します | |
[/pid_file] | シグナルを送信するプロセスのPIDが記録されたファイルのパス |
nginxの場合は/var/run/nginx.pidを指定 | |
[sig_num] | ログファイルを再オープンさせるために送信するシグナル番号 |
nginxはUSR1シグナルでログファイルを再オープンするため、シグナル番号として30(SIGUSR1)を指定 |
Nginxの例
# logfilename [owner:group] mode count size when flags [/pid_file] [sig_num] /var/log/nginx/*.log root:wheel 644 7 * $D05 JG /var/run/nginx.pid 30
設定の確認
以下のコマンドで、構文が正しいか、また次にローテーションが実行される予定日時を確認できる
# newsyslog -nv
このコマンドは実際にはローテーションを実行せず、シミュレーション結果のみを表示
設定ファイルはcronにより自動で読み込まれるため、手動でのサービス再起動は不要
os/freebsd/tips/newsyslog.txt · 最終更新: by hayashi