標準のログ機構はとてもシンプルで使いやすいのですが、
あまりに機能が貧弱すぎて少しさみしいと感じるかたも多いのでは?
そこでsfAdvancedLoggerを使ってみるのはいかがでしょう。
〜〜インストール〜〜
sfAdvancedLoggerPluginにはここからアクセスできます。
http://trac.symfony-project.com/wiki/sfAdvancedLoggerPlugin
例によって以下のコマンドでインストールします。
symfony plugin-install http://plugins.symfony-project.com/sfAdvancedLoggerPlugin
〜〜設定〜〜
インストールしたらlogging.ymlを編集します。
このファイルは通常apps/の下のconfig/ディレクトリに入っていますので、そこを使うのですが、
『ログの送り先なんて全体で共通でいいや!』という方なら、プロジェクトルートのconfig/にlogging.ymlを置いてもかまいません。
logging.ymlには以下のように記述します。この例では、
『debug以上のエラーをsymfony.logに保存する』『err以上の場合にメールする』『phpのwarning以上の言語エラーをphp.logに保存する』
という設定になっています。
all: enabled: on level: debug ※1 rotate: on purge: off loggers: sf_file_debug: ※2 class: sfAdvancedLogger param: php_level: 855 ※3 exception: on ※4 email: ※5 - min_level: 3 ※6 to: ryerryer@example.com subject: "RyerRyer Project Alert Mail" file: ※7 - min_level: 8 file: %SF_LOG_DIR%/symfony.log - type: [PHP, Exception] ※8 file: %SF_LOG_DIR%/php.log
ひとつずつ説明します。
- ※1 根元の設定ではすべて出力としておくといいでしょう。
- ※2 デフォルトでこの名称でsfFileLoggerが設定されているので上書きをするために同名にしています。
- ※3 これを指定すると{PHP}というプレフィクスでPHPの警告がログに吐かれます。数値はerror_reportingのそれです。
- ※4 これを指定すると{Exception}というプレフィクスで未キャッチエラーがログに吐かれます。
- ※5 電子メールでリポートするログ設定です。
- ※6 これはsfLoggerのレベル値です。これ以上の場合のみryerryer@example.comにメールする、という意味の設定です。
- ※7 ファイルに保存するログ設定です。
- ※8 {PHP}と{Exception}の場合はphp.logに吐く、という意味の設定です。
参考:sfLoggerのログレベル数値
define('SF_LOG_EMERG', 0); // System is unusable define('SF_LOG_ALERT', 1); // Immediate action required define('SF_LOG_CRIT', 2); // Critical conditions define('SF_LOG_ERR', 3); // Error conditions define('SF_LOG_WARNING', 4); // Warning conditions define('SF_LOG_NOTICE', 5); // Normal but significant define('SF_LOG_INFO', 6); // Informational define('SF_LOG_DEBUG', 7); // Debug-level messages
設定が終わったらかならずsymfony ccをしてくださいね。
〜〜まとめ〜〜
この3つの機能がsfAdvancedLoggerには搭載されています。
- (1) PHPのエラーもとりたい
- (2) 未キャッチの例外もとりたい
- (3) アラートメールを送信したい
未キャッチのエラーや、致命的例外の場合にアラートメールを送るようにしておくと、
きっといろいろな人びとから喜ばれますよ。
いかがでしたでしょうか?
もっといいLoggerを開発したら僕にも教えてくださいね!ヽ(´ー`)ノ

