Symfony 2: войдите в определенный файл
Я много раз искал, прежде чем публиковать свой вопрос. Я не нашел ясного ответа, так что вот оно.
Я хочу регистрировать сообщения в другом файле журнала как dev.log или prod.log. Я имею в виду файл, который не будет транслироваться с помощью основных сообщений Symfony. Я слышал о регистраторе и обработчике в монологе, но это не очень понятно.
Как я могу регистрировать сообщения от моих контроллеров, модели до определенного файла журнала?
Ответы
Ответ 1
Вы должны добавить информацию в файл services.yml, а не файл config.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');
Ответ 2
Ответ выше работал отлично для меня. Мне пришлось адаптировать его, хотя моя конфигурация была в xml, а не yaml.
Вот такая же конфигурация, но с помощью 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>