0

我正在尝试将我自己的消息从任何地方写入 Symfony 2.3 的日志,而不仅仅是控制器(我意识到你可以只做一个"$this->get('logger')".

我已经看到在 Symfony 1 中您可以使用sfContext,但在 2.3 中该类似乎不再是一个可行的选择。

任何帮助表示赞赏。

4

1 回答 1

3

Symfony2 具有面向服务的架构(http://en.wikipedia.org/wiki/Service-orientated_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 }

此外,您应该熟悉依赖注入文档:http ://symfony.com/doc/current/components/dependency_injection/index.html

我希望这有帮助。如果没有,请告诉我你想在哪里使用logger

于 2013-08-13T11:41:25.733 回答