【メモ】Symfonyの実行環境(prod)でのログ


自分で設定してみると、如何に色んなことが解ってなかったか解りますね。誰かが作ったシステムで設定とか知らなくても、その上で動くアプリケーションを書ければそれはそれで問題ないからなぁ。


…と言うわけで表題の件。



dev環境ではログが書き出されるけど、prod環境ではログが書き出されないので、おかしいなぁと思って設定を見直したけどどうしたらいいか解らず。で、ドキュメント読んだら書いてありました。


1. setting.ymlのlogging_enabledをtrueに

デフォルトではprod以外のすべての環境ではtrue、prod環境ではfalseになっています。

setting.yml

prod:
.settings:
no_script_name:         false
logging_enabled:        false

logging_enabledの行をコメントアウト。



2. factories.ymlで使用するloggerを設定。

デフォルトでは、prod以外の環境ではsfAggregateLoggerを使用していますが、prod環境のみsfNoLogger(ダミー的なクラス?)を使用しています。

prod:
logger:
class:   sfNoLogger
param:
level:   err
loggers: ~

というわけでこれをコメントアウトすれば、全てのエラー(デフォルトではdebugレベルで設定されている)がログとして書き出されます。errレベルだけで良ければ、これで。

prod:
logger:
param:
level:   err



注意

ドキュメントには、

logging_enabled 設定はロギングサブフレームワークを有効にします。この設定を false にセットすれば、ロギングメカニズムが回避され、パフォーマンスが少し向上します。

とあるので、何でもかんでもログを吐けばよいと言うことでもなさそう。
どれくらいパフォーマンスに影響があるかはよく解りませんけども。

ていうか、1.0系にあったlogging.ymlはなくなったのね?



参考

それ以外の設定については、ドキュメント参照のこと。

The symfony Reference Book | symfony | Web PHP Framework
The symfony Reference Book | settings.yml 設定ファイル | symfony | Web PHP Framework
The symfony Reference Book | factories.yml 設定ファイル | symfony | Web PHP Framework

これよく読んだ方が良いなぁ。