skillup

技術ブログ

サーバー・ネットワーク

任意のログファイルのログローテションについて

投稿日:2017年2月23日 更新日:

本日は自作のログファイルをうまくローテーションさせる方法について。

自作でログを作っておりますと、日がたつにずれどんどんと容量が膨らんでいきます。

放置するととんでもない量になっていることが多いですね。

クラウドが一般的になっている現在ではそもそもサーバーの中にログをはかないという方もいるようですが・・・

一般的にLinuxの場合はログのローテーション(一定期間のログを分割して保存し、ある程度の期間がたったら削除する機能)が働いております。

/var/logの下をみますと  messages-20170205のように日付がはいったログが見られるかと思います。

任意のログファイルをこのように処理する場合の手続きについて書きます。自前のスクリプトを書くという方法ももちろんありますが・・・

設定

例えば /var/log/sample/sample.log というログがはかれているとします。このログをローテーションさせたいとします。1日ごとにログを作り、sample.log-20170223のような日付形式で保存したいとします。

ログのローテションをする際にはまず/etc/logrotate.d/に設定ファイルを作ります。

仮にsample_logという設定ファイルを作るとします。

設定情報は下記を参考に。

logrotate によるログのローテーション

Linuxサーバー(CentOS)のApacheのログをローテーションする方法logrotate.d

注意点

ありがたいことにlogrotateにはデバッグ機能があるため、テストをしたり、定期実行を待つのではなくすぐに実行して試すことができます。

設定情報が正しいかどうか

このコマンドでerrorなどのメッセージが出た場合、設定が間違っています。

logrotateでログのローテーションをする

強制実行

通常は1日が終わるまで待たなければいけなかったりするのですが、下記コマンドで強制的に実行できます。こういうテスト機能があるのはすごくありがたいですね・・・

ちなみに一度実行すると実行記録が /var/lib/logrotate.status に残ります。

ここで本日分がすでに実行されていますと動きません。一度実行したら前日に書き換えてあげましょう。

logrotateでログファイルがローテーションされない事への対処

ログが消える・・

rotate n を設定しないといきなりログファイルが消えます。注意しましょう。

logrotate 設定方法

ログローテーションの実行時間については下記リンクで説明されています。

【logrotateの実行タイミング】/etc/crontabに無い時の確認方法

-サーバー・ネットワーク
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

サーバーの過負荷の発見 理論編

会社のテストサーバー(このブログが入っているサーバー)なんかが重くなってくると、再起動したりしているわけなんですが、CPUやメモリの使用率をみたり、といったシステマティックな運用はしてないです。 本来 …

no image

mod_rewriteについて

本日はapacheのmod_rewriteについて。 例えばget句に郵便番号を付けて、住所を出力するWEBプログラムがあるとします。 この場合、そのままだと[crayon-6072a41b66d70 …

no image

サーバー調査(主にログ調査に関して)

実務でサーバーなどの調子が悪いときに見るポイントなどをリストアップ。 基本はログの調査 プログラムも同じだと思いますが、基本的にはログを見ていくことになります。 見たほうが良いログなどは下記のもの C …

no image

インメモリデータベース redis

インメモリデータベースのredis(レディース)について。 キャッシュとして以前はmemcachedを使っていましたが、いろいろ多機能ということでredisをちょっと触ってみようかと。 Content …

no image

Linuxコマンドでのテキスト整形 CSV系の処理など

以前、対テキストファイル系のLinuxコマンドの使い方を紹介しましたが、その関連エントリーを。 今回やるのはCSV系の処理ですね。 id name age 1  suzuki 35 2  tanaka …