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

duコマンドについて

ディスク容量を計るコマンドduについて。 ポツポツ使ってきましたが整理していなかったので、ここで使い方を整理したいと思います。 Contents1 超基本的な使い方1.1 頻出オプション1.2 組み合 …

no image

nginxの設定ファイルの書き方に関して

Contents1 設定ファイルの構成と基本用語1.1 ディレクティブ1.2 コンテキスト2 基本的なディレクティブの遷移2.1 serverディレクティブ2.2 locationディレクティブ2.3 …

no image

nohup(sshログアウトしてもコマンドは続く)+ StickyBit(誰もで書き込み自由)

インフラ系の小ネタです Contents1 nohup2 Sticky Bit(スティッキービット) nohup sshでログインしている時に長時間かかるような処理を実行中、ログアウトするとそのコマン …

no image

VPCでEC2+RDSを構築

以前の記事で、VPCを使ってEC2の環境を作りましたが、一般的にwebアプリはwebサーバーとDBがセットになることがほとんどだと思いますので、AWSでこの環境を構築してみようと思います。 Conte …

no image

Amazon SESについて(Route53登録→SESで受信→S3で保存)

本日はAWSのSESのメモ。 2019年はJavaScriptとAWSを勉強する、と心に決め、JavaScriptの方は色々勉強しましたが、AWSの方が手付かずでした。 インフラ系はここ2年ぐらい進歩 …