2013-08-13 3 views
0

Я пытаюсь написать свои собственные сообщения в журнал в Symfony 2.3, из любой точки мира, а не только контроллер (который я понимаю, вы можете просто сделать "$this->get('logger')".регистрация в Symfony 2,3

Я видел, что в Symfony 1 вы можете использовать sfContext, но этот класс больше не кажется жизнеспособным выбором в 2.3.

Любая помощь приветствуется.

+0

Вы должны зарегистрировать свою службу с помощью [Monolog] (http://symfony.com/doc/current/reference/dic_tags.html#monolog-logger) в качестве зависимости. – moonwave99

ответ

3

Symfony2 имеет сервис-ориентированную архитектуру (http://en.wikipedia.org/wiki/Service-oriented_architecture) и logger является одним из службы (по умолчанию Monolog). В контроллере у вас есть доступ к службе через $this->get('service_name'). Вот более подробная информация об обслуживающем контейнере: http://symfony.com/doc/current/book/service_container.html#what-is-a-service-container. Если вы хотите использовать logger в другой службе, вам необходимо определить услугу и ввести услугу logger. Пример:

# section with defined service in your config.yml file (by default in config.yml) 
services: 
    # your service name 
    my_service: 
     # your class name 
     class: Fully\Qualified\Loader\Class\Name 
     # arguments passed to service constructor. In this case @logger 
     arguments: ["@logger"] 
     # tags, info: http://symfony.com/doc/current/components/dependency_injection/tags.html 
     tags: 
      - { name: monolog.logger, channel: acme } 

Кроме того, вы должны ознакомиться с Docs нагнетательных зависимостей: http://symfony.com/doc/current/components/dependency_injection/index.html

Я надеюсь, что помог. Если нет, сообщите нам, где именно вы хотите использовать logger.

Смежные вопросы