FreeBSD 10.2 サーバーの syslog がうまくローテートされていないことに気づきました。
ファイルサイズが巨大化したり、毎週、毎月初日にログをローテーションしているのですが、ふと気が付くと数ヶ月ローテーションが行われておらず、ファイヤーウォールログが100MB を越えています。
全ログファイルのローテーションが止まっています。
FreeBSD の場合、ログをローテーションさせるのは、newsyslog の機能で OS起動時に自動的に起動されます。
何かの原因で不活化されたの?
と思い、newsyslog をリスタートさせてみることにしました。
ところが、なぜか「Creating and/or trimming log filesnewsyslog: malformed ‘at’ value:」となりnewsyslog が機能しないようです。
# rc.d/newsyslog restart Creating and/or trimming log filesnewsyslog: malformed 'at' value: /var/log/maillog 640 7 * @M1D05 JC .
検索しても期待した検索結果が見つかりません。
やむなく自力でオンラインマニュアルを確認してみることにしたところ、/etc/newsyslog.conf に書式間違いがありそうだと判明。他のマシンの /var/log/maillog の記述と比較してみると、「@M1D05」の記述がおかしい気づきました。毎月1日の午前5時にログを新しくしたいと設定したつもりだったのですが、毎月の場合に @ は使えないようです。
「@M1D05」を「$M1D05」に編集し newsyslog に再起動を掛けたところ、正常に動作しログが期待した時刻にローテーションされ始めました。
きっと、私がデフォルトの記述を設置したマシンの用途に応じた編集を加える時に間違えたようです。
一行の記述を間違えると、全部止まってしまうのね。