自作のログの書き込みをlogrotateに登録してみる

logrotateは(ログ・ローテート)、増え続けるログファイルを定期的に世代交代させ、ディスク容量のパンクを防ぐためのシステム管理ツールになります。


ログを自作しながら学ぶで作成しました自作のログの書き込みの仕組みをlogrotateに登録してみます。


始めにlogrotateが動作しているか?を確認してみます。

下記コマンドを実行して、logrotateが次回の実行日時を出力します。

$ systemctl list-timers | grep logrotate
Wed 2026-04-22 00:50:56 JST     10h Tue 2026-04-21 10:48:22 JST 3h 28min ago logrotate.timer              logrotate.service

のような出力があれば、logrotateは動作していることになります。




自作のログの書き込みをlogrotateに登録します。

下記コマンドで登録用のファイルを作成します。

$ micro /etc/logrotate.d/mylogger

この時、/var/log/myloggerの方のディレクトリ名と設定用のファイル名を合わせます。


新規で作成しましたファイルには下記の内容を作成します。

/var/log/mylogger/*.log {
	su root adm
    daily
    rotate 7
    missingok
    notifempty
    compress
    delaycompress
    create 0664 root adm
    copytruncate
}

ファイルの作成後、下記のコマンドを実行して強制的にログファイルを世代交代してみます。

$ sudo logrotate -f /etc/logrotate.d/mylogger

※オプションが -d の場合、通常の動作確認になります。


$ /var/log/mylogger

を実行して、

app.log  app.log.1

新たなファイルが作成されていれば、設定は終了です。




/etc/logrotate.d/myloggerで書いた各項目について

su root adm:rootユーザー、admグループとして実行することを明示

daily:毎日チェックする

rotate 7:7日分残す(それを過ぎたら古い順に削除)

missingok:ログファイルがなくてもエラーを出さない

notifempty:ログが0バイト(空)なら何もしない

compress:古いログは圧縮する

delaycompress:「.1」の段階では圧縮せず、「.2」から圧縮する

create 0664 root adm:新しい空ファイルをこの権限で作る

copytruncate:前世代のファイル作成時に自動で都合よくしてくれるような設定

京都の東本願寺で開催されているプログラミング教室で講師をしています。
詳しくはTera schoolを御覧ください。
同じカテゴリーの記事
マインクラフト用ビジュアルエディタを開発しています。

詳しくはinunosinsi/mcws_blockly - githubをご覧ください。