2012年6月16日土曜日

Symfony1.4でログフォーマット変更方法の公式ドキュメントが間違っている件


Symfony1.4 でのログフォーマットの変更方法が書かれた公式ページは次のリンク先にあります。
http://www.symfony-project.org/gentle-introduction/1_4/ja/16-Application-Management-Tools

そこではアプリケーションの factories.yml を次のように変更すると書かれています。

all:
  logger:
    param:
      sf_file_debug:
        param:
          format:      %time% %type% [%priority%] %message%%EOL%
          time_format: %b %d %H

しかしこれをそのまま書いても効きません。正しくは、

all:
  logger:
    param:
      loggers:
        sf_file_debug:
          param:
            format:      %time% %type% [%priority%] %message%%EOL%
            time_format: %b %d %H

となります。追加した “loggers:” 以降の行のインデントは1段深くします。

以下、発見の経緯。

公式どおり設定しても効かないからおかしいと思って色々調べると、 factories.yml のペルプに行き着いて、形式の違いに気づきました。
http://www.symfony-project.org/reference/1_4/ja/05-Factories#chapter_05_logger

念のため、Symfony のパッケージ内部を覗いてデフォルト設定を確認すると、
(lib/vendor/symfony/lib/config/config/factories.yml)

all:
  logger:
    class: sfAggregateLogger
    param:
      level: debug
      loggers:
        sf_web_debug:
          class: sfWebDebugLogger
          param:
            level: debug
            condition:       %SF_WEB_DEBUG%
            xdebug_logging:  false
            web_debug_class: sfWebDebug
        sf_file_debug:
          class: sfFileLogger
          param:
            level: debug
            file: %SF_LOG_DIR%/%SF_APP%_%SF_ENVIRONMENT%.log

となっています。
なるほど確かに “loggers:” が足りない、と言うことで前述の通り設定して解決しました。

0 件のコメント:

コメントを投稿