質問を投稿する前にたくさん検索しました。明確な答えが見つからなかったので、ここにあります。
dev.logまたはprod.logなどの別のログファイルにメッセージを記録したい。私はSymfonyのコアメッセージによって汚染されないファイルを意味します。モノログでロガーとハンドラーについて聞いたが、それはあまり明確ではない。
コントローラ、モデルから特定のログファイルにメッセージを記録するにはどうすればよいですか?
config.yml ファイルではなく、services.yml ファイルに情報を追加する必要があります。
だから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]
コントローラーアクションでは、次を使用します。
$logger = $this->get('my_service.logger');
上記の答えは、私にとっては完全にうまくいきました。私の構成は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>