2011-11-23 6 views
12

私は質問を投稿する前に多くを検索しました。私は明確な答えを見つけられなかったので、ここにそれがあります。Symfony 2:特定のファイルにログイン

dev.logまたはprod.logとは別のログファイルにメッセージを記録します。 symfonyのコアメッセージでは詮索されないファイルを意味します。私はモノログでロガーとハンドラについて聞いたことがありますが、あまり明確ではありません。

コントローラからメッセージを特定のログファイルに記録する方法を教えてください。だから、services.ymlまたはservices.xml)であなたが

my_service.logger: 
    class:  Symfony\Bridge\Monolog\Logger 
    arguments: [app] 
    calls: 
     - [pushHandler, [@my_service.logger_handler]] 

my_service.logger_handler: 
    class:  Monolog\Handler\StreamHandler  
    arguments: [%kernel.logs_dir%/%kernel.environment%.admin.log, 200] 

し、あなたのコントローラにしてい

:あなたはservices.ymlファイルではなく、config.ymlファイルに情報を追加する必要が

+3

可能な重複:http://stackoverflow.com/questions/8169114/how-to-write-logs-from-one-service-into-separate-file –

+1

重複のこのISSキンク、あなたのためにリンクはソリューションの一部です。私はこのサービスをapp/config/config.ymlに追加しようとしましたが、動作させる方法はありませんでした。これまでに作成されたログファイルはありません。 – frinux

答えて

22

あなたが使用するアクション:

$logger = $this->get('my_service.logger'); 
+1

NetBeansを使用していただきありがとうございます。[@ my_service.logger_handler]を使用してエラーが発生しました。私は引用符を追加する必要がありました:["@ my_service.logger_handler"]うまくいくと思います。私のために – Ashbay

+0

それはサービスの下でそれを追加した後にのみ働いた:ymlファイルに直接ではなく – Andreas

2

上記の答えは私にとってはうまくいった。私の設定はyamlではなくxmlになっていたので、それを適応させなければならなかった。

ここでは全く同じ設定ですが、xmlを使用しています。

<service id="my_service.logger" class="Symfony\Bridge\Monolog\Logger"> 
    <argument type="string">app</argument> 
    <call method="pushHandler"> 
     <argument type="service" id="my_service.logger_handler" /> 
    </call> 
</service> 
<service id="my_service.logger_handler" class="Monolog\Handler\StreamHandler"> 
    <argument>type="string">%kernel.logs_dir%/%kernel.environment%.license.log</argument> 
    <argument type="string">200</argument> 
</service> 
関連する問題