2017-02-06 16 views
0

私はmonolog loggerでfosrestBundleを使用してカスタムログを作成します。 私はconfig_dev.ymlでこのCONFを追加しました:symfony環境設定ファイル

monolog: 
    handlers: 
     main: 
      type:   fingers_crossed 
      action_level: error 
      handler:  nested 
     nested: 
      type: stream 
      path: "%kernel.logs_dir%/%kernel.environment%.log" 
      level: debug 
     console: 
      type: console 
     myCustomLog: 
      type: stream 
      path: "%kernel.logs_dir%/myCustomLog%kernel.environment%.log" 
      channels: [myCustomLog] 

をだから私は私の他の環境設定ファイルで同じことをやった(config_prod.yml、config_qualif.yml ...)

を問題は、それがconfig_prodもありますまたはconfig_qualifは使用されません。

私はこのエラーが発生しました:

PHP Fatal error: Uncaught Symfony\\Component\\DependencyInjection\\Exception\\ServiceNotFoundException: You have requested a non-existent service "monolog.logger.myCustomLog". in /var/www/myWebSite/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ContainerBuilder.php:816\nStack trace:\n#0 

私はconfig.ymlファイルで私のモノローグconfに移動し、それはすべての環境で動作しますが、これは良い解決策ではありません。

環境設定ファイルを正しく使用する方法を理解するのを助けることができますか?私は何が良いのか分かりません。そして、私はfosrestbundleが適切な環境設定ファイルを使用しているかどうかはわかりません。

私のapacheのconfはprod環境のために次のようになります。

 RewriteRule ^(.*)$ /app_qualif.php [QSA,L] 

そしてapp.phpに私はこのラインがあります:

予選環境の
ServerAdmin [email protected] 
DocumentRoot /var/www/myWebSite/web 
<IfModule dir_module> 
    DirectoryIndex app.php 
</IfModule> 

<Directory /var/www/myWebSite/web> 
    Options Indexes FollowSymLinks 
    AllowOverride All 
    Require all granted 
    <IfModule mod_rewrite.c> 
     Options +FollowSymlinks 
     RewriteEngine On 
     RewriteCond %{REQUEST_FILENAME} !-f 
     RewriteRule ^(.*)$ /app.php [QSA,L] 
    </IfModule> 
</Directory> 

、書き換えルールがある

$kernel = new AppKernel('prod', false); 

また、app_qualif.phpには次の行があります。

$kernel = new AppKernel('qualif', false); 

あなたの助け

答えて

1

Oを作成します。 kは問題を解決しました。

設定ファイルは正常に動作します。

問題はコマンドラインシステムから発生しました。私がコマンドを呼んだとき、私はこの構文を使っていました:

しかしこれを使って、symfonyは使用する環境設定を知りません。 今、私はこの構文で私のコマンドを起動します。config_prodまたはconfig_qualifが使用されていない理由:

php app/console --env=prod app:my-command 
0

ためのおかげであなたはモノローグのためのカスタムカテゴリのチャネルを設定します。サービスを登録する必要があります。あなたが設定でモノローグに直接新しいチャンネルを登録することができますモノローグ2.4以降 http://symfony.com/doc/current/reference/dic_tags.html#dic-tags-monolog

2):

1)独自のサービスを作成し、ここでは説明としてモノローグチャネルハンドラとしてそれにタグを付ける: 次の2つのソリューションを持っています.yml:

monolog: 
    channels: ["myCustomLog"] 
    handlers: 
     main: 
      type:   fingers_crossed 
      action_level: error 
      handler:  nested 
     nested: 
      type: stream 
      path: "%kernel.logs_dir%/%kernel.environment%.log" 
      level: debug 
     console: 
      type: console 
     myCustomLog: 
      type: stream 
      path: "%kernel.logs_dir%/myCustomLog%kernel.environment%.log" 
      channels: [myCustomLog] 

モノローグは、サービスにautomaticaly monolog.looger.mycustomlog

+0

これが本当の問題に答えていませんか?あなたのソリューションは動作しますが、環境に応じて異なるレベルが必要な場合は、私はそれを行うことができません –