ログをとるときのおすすめ

標準のログ機構はとてもシンプルで使いやすいのですが、
あまりに機能が貧弱すぎて少しさみしいと感じるかたも多いのでは?
そこで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:     8553
         exception:     on ※4
 
         email: ※5
           - min_level: 36
             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を開発したら僕にも教えてくださいね!ヽ(´ー`)ノ

Leave a Reply

Name (required)
Mail (will not be published) (required)

Your Comments:

Spam Protection by WP-SpamFree