Apacheのログ・ローテーション設定(access_log、error_logのlogrotate)

更新:

Apacheのログ・ローテーション設定(access_log、error_logのlogrotate)方法。
対象:Linux Fedora, RedHat

Apacheのログ・ローテーション設定(access_log、error_logのlogrotate)

  • Apacheのログ(access_log、error_log)は、初期設定では同じファイルに追記していきます。
    日々ファイルが肥大化していきます。
    これを日別、月別など、一定期間ごとにファイルを分けて記録するには、ログ・ローテート(logrotate)を利用します。
    Apacheについては、Apache・aprのインストール・設定を参照。
  • ローテーションの設定サンプル
    設定ファイルの元は、
    /etc/logrotate.conf
    です。
    /etc/logrotate.confを見ると、/etc/logrotate.d/以下のファイルをincludeしていることが分かります。
    /etc/logrotate.d/にアプリケーションごとに、個別にファイルを作って設定した方が分かりやすいと思います。
    ファイルがない場合は、自分で作ります。
    vi /etc/logrotate.d/httpd2
    	/usr/local/apache2/logs/access_log /usr/local/apache2/logs/error_log {
    		missingok
    		notifempty
    		sharedscripts
    		daily
    		rotate 30
    		postrotate
    			service httpd2 restart
    		endscript
    	}
    
    Apacheを再起動
    service httpd2 restart
    
    上記の例では、httpd2ファイルにaccess_logとerror_logを並べて書いていますが、 複数のファイルを指定する場合は、このようにスペースで区切って並べて書きます。

    /etc/logrotate.d/以下にファイルを作れば、その他のログに関しても利用できます。

    通常ログファイルは、/var/log/などにあります。
    rpm、apt-get、yumなどを利用してインストールしたものは、自動的にlogrotateが設定される場合があります。

    ソースからコンパイルしたアプリケーションの場合は、/var/log/以外のディレクトリにログを保存する場合があるので、 上記の例のように、自分でログファイルがあるディレクトリを指定します。
  • logrotateのコマンド
    ・ローテーションの実行・回数
    	daily       毎日
    	weekly      毎週
    	monthly     毎月
    	rotate      指定した回数ローテーション(いくつログファイルを残すか)
    	            rotate [ローテーション回数]
    
    ・ログの圧縮
    	compress    ログをgzipで圧縮
    	nocompress  圧縮しない
    
    ・その他
    	ifempty     ログファイルが空の場合でもローテーション
    	notifempty  ログファイルが空の場合ローテーションしない
    
    	missingok   ログファイルが存在しない場合にエラーを出力しない
    	nomissingok ログファイルが存在しない場合にエラーを出力
    
    	postrotate  endscriptとの間に書いたコマンドをローテーション後に実行
    	prerotate   endscriptとの間に書いたコマンドをローテーション前に実行
    
    	size          ログファイルが指定サイズ以上の場合ローテーション
    	              size [ファイルサイズ]
    	sharedscripts ログファイルを複数指定した場合、それぞれpostrotate、prerotate内のコマンドを実行
    
    	create      ローテーション後、空のログファイルを作成
    	            create [パーミッション] [ユーザ名] [グループ名] で権限の指定可能
    	nocreate    空のログファイルを作成しない
    
    	olddir      指定したディレクトリにローテーションしたログを保存
    	            olddir [ディレクトリ名]
    	noolddir    元と同じディレクトリにローテーションしたログを保存
    
  • logwatch.plの実行
    perl /etc/log.d/scripts/logwatch.pl

このエントリーをはてなブックマークに追加