考え方1.エラーハンドリング2.エラー検知通知メールを送信する関数3.エラー検知通知メール本文まとめスポンサーリンク前説アプリケーションの運用管理において、エラーが発生した際に、それを検知し、保守担当チームにエラー検知通知メールを送信することが当然な話ですが、残念ながら、小規模ECサイトなどのWEBアプリケーションにおいて、予算や認識などいろいろな要因で、エラー検知手段を設けずに、あとからエンドユーザーのクレームにより、初めてエラーが発生したことが分かったことが多いそうです。それはサービスの品質の改善、向上に非常に良くないため、プロジェクトの要件定義段階で、「エラー検知通知メールを送信する」を要件に入れて、お客様に説得し、実現しましょう。実現方法は2通しかないと思います。一つは、JP1などの運用管理ツールを導入することです。運用管理ツールはいろんな素晴らしい機能が付いていますが、導入費用がとても高いため、中小企業には、向いていないと思います。一つの方法は、自力で実現することです。今日はこの方法を中心に話させて頂きたいと思います。エラー検知通知メールを送信する」というテーマで、CodeIgniterフレームワークにおいて、エラー通知メールの実現方法を紹介したいと思います。CodeIgniterと言っても、考え方は同じなので、ほかのフレームワークにも通用ではないかと思います。そこは皆さんのご判断に任せます。・CodeIgniterバージョン:3.1.3※バージョン:3.1.6でも使えますので、3.X系はいけそうではないかと思います。要件システムエラーが発生した際に、発生した時間、内容をリアルタイムで保守チームにメールを送信すること。エラー検知通知メールを送信することです。エラーハンドリングのところに、ついでに、エラー検知通知メールを送信すれば、済むということです。エラーログの出力をご参考し、詳細は割愛させていただきます。エラーログの出力にも記載しておりますが、エラーハンドリングは2箇所があります。system\core\Common.phpの_error_handlerメソッドと_exception_handlerメソッドです。エラーログを出力した後に、エラーの発生時間と内容をメールにも出力すれば、完成です。1点注意するところがあり、エラーメッセージが長い場合、メール送信したら、読みづらいため、最初の100文字とか、1000文字とかだけをメールに記載すれば良いかと思います。エラー検知通知メールを送信することは、あくまで、エラーが発生しましたよという通知することで、具体的な内容はあとで、運用担当者はエラーログを確認する際に、全てが分かりますので、簡単な内容だけ通知すれば良いかと思います。エラー検知通知メールを送信する上記のソースは、_error_handlerメソッドのサンプルです。_exception_handlerメソッドは(ファイル名と行数)若干違いますが、考え方が同じです。2.エラー検知通知メールを送信する関数コアのエラー検知通知メールを送信する関数です。関数名は長くて難しそうに見えますが、本質的なところ、簡単、メール送信です。メール本文は、Smartyを使って、発生時間などの変数が置換することにします。簡単なので、一気にサンプルを上げます。実際に定数化にしたほうが良いかと思います。実際に定数化にしたほうが良いかと思います。実際に定数化にしたほうが良いかと思います。実際に定数化にしたほうが良いかと思います。$from);}3.エラー検知通知メール本文エラー検知通知メール本文error_mail.tplの中身です。簡単なので、説明を割愛させていただきます。○○○にてエラーが検知されました。運用保守チームに確認を依頼してください。%contents%12345678910○○○にてエラーが検知されました。運用保守チームに確認を依頼してください。エラー検知通知メールを送信する」というテーマで、エラー発生時のメール送信方法を紹介しました。