Symfony 2: войти в определенный файл - PullRequest
12 голосов
/ 23 ноября 2011

Я много искал, прежде чем опубликовать свой вопрос. Я не нашел четкого ответа, так что вот оно.

Я хочу записывать сообщения в другой файл журнала, например dev.log или prod.log. Я имею в виду файл, который не будет распространяться сообщениями ядра Symfony. Я слышал о логгере и обработчике в монологе, но это не очень понятно.

Как я могу записывать сообщения от моих контроллеров, модель в определенный файл журнала?

Ответы [ 2 ]

23 голосов
/ 01 февраля 2012

Вы должны добавить информацию в файл 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 голосов
/ 27 августа 2013

Ответ выше работал отлично для меня.Мне пришлось адаптировать его, хотя, поскольку моя конфигурация была в 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>
...