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

mod_rewriteについて

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

no image

vagrant share

実はvagrantを使って仮想環境を一時的ではありますが、webから見ることができます。 1 まずはhttps://atlas.hashicorp.com/account/newにてアカウント登録。そ …

no image

OSコマンドインジェクション

Contents1 OSコマンドインジェクションとは?2 被害3 対策4 参考リンク OSコマンドインジェクションとは? OSに対する命令文を不正に紛れ込ませて攻撃させる手法。 被害 サーバー内のファ …

no image

パス名パラメータの未チェック・ディレクトリトラバーサル

本日もセキュリティ関係のネタを少々。ディレクトリ・トラバーサルという攻撃です。 Contents1 ディレクトリ・トラバーサルとは?2 被害3 対策4 参考リンク ディレクトリ・トラバーサルとは? g …

no image

Perlワンライナー他

Perlではcgiと連動してWEBアプリケーションを作るケースが多いですが、元々テキストの編集や置換が非常に便利です。 例えば、あるディレクトリにある特定のファイル名(正規表現使用可)だけを抽出する場 …

アーカイブ