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

herokuでのhttpd.conf設定

前回の記事でLet’s EncryptでSSL設定する場合、 http://ドメイン/.well-known/ というURLにアクセスする必要があります。 ただherok …

no image

CentOS7でのIP固定

日ごろ業務ではwindowsにVitrtualBox+VagrantにCentOSをいれていたのですが、スペックにややネックがあったため、今は使っていないPCにCentOS7を入れて開発企図して使うこ …

no image

Linuxコマンドの総復習

ちょっとスポット的にLinuxコマンドの復習などを。 Contents1 コマンドの実行2 リダイレクト処理の一覧2.1 コマンド> ファイル2.2 コマンド<ファイル2.3 コマンド&g …

no image

Git+SSH鍵認証

鍵認証をともなったgitのpushやpullについて。 中央リポジトリに公開鍵がおいてあり、リモートリポジトリに秘密鍵を配置します。 ステップとしては以下の2ステップになります。実行時ユーザーのディレ …

no image

form以外でのPOST送信(というかHTTP通信全般)

前回の記事に引き続きですが、APIを叩く側はformでデータを送るのではなく、コードの中にPOSTする処理を書きます。 選択肢としては curlコマンドを使う file_get_contentsを使う …

アーカイブ