Open Source Web Development Tutorials - Dev Shed
PHPでログ機能を作ろう
(2009/02/13公開)
基本設計
ログの実装方法に移る前に、ログの基本的な設計構想について考慮しておこう。
1.ファイルシステムかデータベースか
ログを保存するには、データベースかファイルを利用することができる。データベース利用の短所は、書き込みに時間がかかり、データベースサーバーに不必要な負荷をかけることになるということだ。ファイルシステムを利用することの難点は、読み込みや検索にかかる時間がデータベースサーバーを使うのと比べて長くなるということだ。
データベースサーバーを使うことの利点は、ログがよく整理されることと、ソートや検索、また表示機能が優れていることをあげることができる。簡単にルールを決めるとすれば、過剰な頻度でログ作成がなされる場合はファイルシステムを使い、そうでないならばデータベースを使うことができるだろう。一般的にトレースログは頻繁に作成されるため、ファイルシステムに記録する方がよいだろ。監査ログとユーザーログはデータベースにしておく。
2.優先度
ログ情報に優先度を付けるかどうかのオプションを付け、優先度を設定できるようにする。時折、ログの記録によりアプリケーションの実行が重くなることがある。この場合、ログの記録を優先度の高い問題に限定するか、アプリケーション・ログを完全に停止することができるようなオプションを付ける。
3.サイズ制限
ログのサイズを限定するオプションも必要だ。さもなければ(最悪の場合)ハードディスクはログ情報であふれかえってしまう。筆者は、ログを経過日数によって制限するオプションのみを持つアプリケーションに出会ったことがある。つまり、ログを1日間、2日間・・・n日間保存するということだけが設定できるというものだ。このアプリケーションは常にディスクをログ情報でいっぱいにし、実行も重くなるという問題を抱えていた。なぜなら、時によっては1日使用するだけでも、数ギガバイトのログ情報が作成されることもあるからだ。そこで、ファイルシステムを使用する場合はサイズの上限を、データベースを使用する場合は最大行数を設定できるようにし、ログの全サイズを抑制する必要がある。
4.ログファイルの位置:
ログをどこに保存するかを設定できるようにする。なぜなら、場合により、アプリケーションがインストールされた場所以外のドライブや場所にログを記録する必要が生じることもあるからだ。
5.タイムスタンプ:
ログのメッセージはサーバーの日時を含んでいたとしても、タイムスタンプは付けるべきだ。なぜなら、時には異なるサーバー時刻を持つ2つのアプリケーション・インスタンスのログを見比べる必要があるからだ。
Copyright © 2008 Ziff Davis Enterprise, Inc.
Originally appearing in the U.S. Edition of Dev Shed. All Rights Reserved.








